// starting begin ResetFog ;
   0: CALL_OW 335
// SetWeather ( 2 , 30 , 30 ) ;
   4: LD_INT 2
   6: PPUSH
   7: LD_INT 30
   9: PPUSH
  10: LD_INT 30
  12: PPUSH
  13: CALL_OW 550
// HiddenCamera ( 42 , 31 , 8 ) ;
  17: LD_INT 42
  19: PPUSH
  20: LD_INT 31
  22: PPUSH
  23: LD_INT 8
  25: PPUSH
  26: CALL_OW 244
// if difficulty < 3 then
  30: LD_OWVAR 67
  34: PUSH
  35: LD_INT 3
  37: LESS
  38: IFFALSE 193
// begin HiddenCamera ( 59 , 66 , 8 ) ;
  40: LD_INT 59
  42: PPUSH
  43: LD_INT 66
  45: PPUSH
  46: LD_INT 8
  48: PPUSH
  49: CALL_OW 244
// HiddenCamera ( 42 , 26 , 8 ) ;
  53: LD_INT 42
  55: PPUSH
  56: LD_INT 26
  58: PPUSH
  59: LD_INT 8
  61: PPUSH
  62: CALL_OW 244
// HiddenCamera ( 95 , 31 , 8 ) ;
  66: LD_INT 95
  68: PPUSH
  69: LD_INT 31
  71: PPUSH
  72: LD_INT 8
  74: PPUSH
  75: CALL_OW 244
// HiddenCamera ( 86 , 61 , 8 ) ;
  79: LD_INT 86
  81: PPUSH
  82: LD_INT 61
  84: PPUSH
  85: LD_INT 8
  87: PPUSH
  88: CALL_OW 244
// HiddenCamera ( 71 , 78 , 8 ) ;
  92: LD_INT 71
  94: PPUSH
  95: LD_INT 78
  97: PPUSH
  98: LD_INT 8
 100: PPUSH
 101: CALL_OW 244
// HiddenCamera ( 59 , 66 , 8 ) ;
 105: LD_INT 59
 107: PPUSH
 108: LD_INT 66
 110: PPUSH
 111: LD_INT 8
 113: PPUSH
 114: CALL_OW 244
// HiddenCamera ( 108 , 75 , 8 ) ;
 118: LD_INT 108
 120: PPUSH
 121: LD_INT 75
 123: PPUSH
 124: LD_INT 8
 126: PPUSH
 127: CALL_OW 244
// if difficulty < 2 then
 131: LD_OWVAR 67
 135: PUSH
 136: LD_INT 2
 138: LESS
 139: IFFALSE 193
// begin HiddenCamera ( 19 , 3 , 8 ) ;
 141: LD_INT 19
 143: PPUSH
 144: LD_INT 3
 146: PPUSH
 147: LD_INT 8
 149: PPUSH
 150: CALL_OW 244
// HiddenCamera ( 62 , 32 , 8 ) ;
 154: LD_INT 62
 156: PPUSH
 157: LD_INT 32
 159: PPUSH
 160: LD_INT 8
 162: PPUSH
 163: CALL_OW 244
// HiddenCamera ( 80 , 49 , 8 ) ;
 167: LD_INT 80
 169: PPUSH
 170: LD_INT 49
 172: PPUSH
 173: LD_INT 8
 175: PPUSH
 176: CALL_OW 244
// HiddenCamera ( 102 , 93 , 8 ) ;
 180: LD_INT 102
 182: PPUSH
 183: LD_INT 93
 185: PPUSH
 186: LD_INT 8
 188: PPUSH
 189: CALL_OW 244
// end ; end ; prepareCharacters ( ) ;
 193: CALL 1234 0 0
// end ; end_of_file
 197: END
// export objective , commanders , stealth , mercenaries , vehicleArrived , scientistInside , warning , endGame ; export function createChar ( name , sex , class_name , importance , skills , face , gallery ) ; begin
 198: LD_INT 0
 200: PPUSH
// if sex =  then
 201: LD_VAR 0 2
 205: PUSH
 206: LD_STRING 
 208: EQUAL
 209: IFFALSE 227
// sex = rand ( 1 , 2 ) ;
 211: LD_ADDR_VAR 0 2
 215: PUSH
 216: LD_INT 1
 218: PPUSH
 219: LD_INT 2
 221: PPUSH
 222: CALL_OW 12
 226: ST_TO_ADDR
// hc_name := name ;
 227: LD_ADDR_OWVAR 26
 231: PUSH
 232: LD_VAR 0 1
 236: ST_TO_ADDR
// hc_sex := sex ;
 237: LD_ADDR_OWVAR 27
 241: PUSH
 242: LD_VAR 0 2
 246: ST_TO_ADDR
// hc_class := class_name ;
 247: LD_ADDR_OWVAR 28
 251: PUSH
 252: LD_VAR 0 3
 256: ST_TO_ADDR
// hc_importance := importance ;
 257: LD_ADDR_OWVAR 32
 261: PUSH
 262: LD_VAR 0 4
 266: ST_TO_ADDR
// hc_basic_skills := skills ;
 267: LD_ADDR_OWVAR 30
 271: PUSH
 272: LD_VAR 0 5
 276: ST_TO_ADDR
// hc_face_number := face ;
 277: LD_ADDR_OWVAR 34
 281: PUSH
 282: LD_VAR 0 6
 286: ST_TO_ADDR
// hc_gallery := gallery ;
 287: LD_ADDR_OWVAR 33
 291: PUSH
 292: LD_VAR 0 7
 296: ST_TO_ADDR
// result := CreateHuman ;
 297: LD_ADDR_VAR 0 8
 301: PUSH
 302: CALL_OW 44
 306: ST_TO_ADDR
// end ;
 307: LD_VAR 0 8
 311: RET
// export function createVeh ( chassis , control , engine , weapon , fuel_state ) ; begin
 312: LD_INT 0
 314: PPUSH
// vc_chassis = chassis ;
 315: LD_ADDR_OWVAR 37
 319: PUSH
 320: LD_VAR 0 1
 324: ST_TO_ADDR
// vc_control = control ;
 325: LD_ADDR_OWVAR 38
 329: PUSH
 330: LD_VAR 0 2
 334: ST_TO_ADDR
// vc_engine = engine ;
 335: LD_ADDR_OWVAR 39
 339: PUSH
 340: LD_VAR 0 3
 344: ST_TO_ADDR
// vc_weapon = weapon ;
 345: LD_ADDR_OWVAR 40
 349: PUSH
 350: LD_VAR 0 4
 354: ST_TO_ADDR
// vc_fuel_battery = fuel_state ;
 355: LD_ADDR_OWVAR 41
 359: PUSH
 360: LD_VAR 0 5
 364: ST_TO_ADDR
// result := CreateVehicle ;
 365: LD_ADDR_VAR 0 6
 369: PUSH
 370: CALL_OW 45
 374: ST_TO_ADDR
// end ;
 375: LD_VAR 0 6
 379: RET
// export function NationSide ( nation , side ) ; begin
 380: LD_INT 0
 382: PPUSH
// uc_nation := nation ;
 383: LD_ADDR_OWVAR 21
 387: PUSH
 388: LD_VAR 0 1
 392: ST_TO_ADDR
// uc_side := side ;
 393: LD_ADDR_OWVAR 20
 397: PUSH
 398: LD_VAR 0 2
 402: ST_TO_ADDR
// end ;
 403: LD_VAR 0 3
 407: RET
// export function getUnits ( side ) ; begin
 408: LD_INT 0
 410: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , side ] ] ) ;
 411: LD_ADDR_VAR 0 2
 415: PUSH
 416: LD_INT 21
 418: PUSH
 419: LD_INT 1
 421: PUSH
 422: EMPTY
 423: LIST
 424: LIST
 425: PUSH
 426: LD_INT 22
 428: PUSH
 429: LD_VAR 0 1
 433: PUSH
 434: EMPTY
 435: LIST
 436: LIST
 437: PUSH
 438: EMPTY
 439: LIST
 440: LIST
 441: PPUSH
 442: CALL_OW 69
 446: ST_TO_ADDR
// end ;
 447: LD_VAR 0 2
 451: RET
// export function getUnitsArea ( side , area ) ; begin
 452: LD_INT 0
 454: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , side ] , [ f_inarea , area ] ] ) ;
 455: LD_ADDR_VAR 0 3
 459: PUSH
 460: LD_INT 21
 462: PUSH
 463: LD_INT 1
 465: PUSH
 466: EMPTY
 467: LIST
 468: LIST
 469: PUSH
 470: LD_INT 22
 472: PUSH
 473: LD_VAR 0 1
 477: PUSH
 478: EMPTY
 479: LIST
 480: LIST
 481: PUSH
 482: LD_INT 95
 484: PUSH
 485: LD_VAR 0 2
 489: PUSH
 490: EMPTY
 491: LIST
 492: LIST
 493: PUSH
 494: EMPTY
 495: LIST
 496: LIST
 497: LIST
 498: PPUSH
 499: CALL_OW 69
 503: ST_TO_ADDR
// end ;
 504: LD_VAR 0 3
 508: RET
// export function getClassUnitsOutside ( class_name , side ) ; begin
 509: LD_INT 0
 511: PPUSH
// result := FilterAllUnits ( [ [ f_class , class_name ] , [ f_side , side ] , [ f_outside ] , [ f_not , [ f_hasTask ] ] ] ) ;
 512: LD_ADDR_VAR 0 3
 516: PUSH
 517: LD_INT 25
 519: PUSH
 520: LD_VAR 0 1
 524: PUSH
 525: EMPTY
 526: LIST
 527: LIST
 528: PUSH
 529: LD_INT 22
 531: PUSH
 532: LD_VAR 0 2
 536: PUSH
 537: EMPTY
 538: LIST
 539: LIST
 540: PUSH
 541: LD_INT 56
 543: PUSH
 544: EMPTY
 545: LIST
 546: PUSH
 547: LD_INT 3
 549: PUSH
 550: LD_INT 60
 552: PUSH
 553: EMPTY
 554: LIST
 555: PUSH
 556: EMPTY
 557: LIST
 558: LIST
 559: PUSH
 560: EMPTY
 561: LIST
 562: LIST
 563: LIST
 564: LIST
 565: PPUSH
 566: CALL_OW 69
 570: ST_TO_ADDR
// end ;
 571: LD_VAR 0 3
 575: RET
// export function getClassUnits ( class_name , side ) ; begin
 576: LD_INT 0
 578: PPUSH
// result := FilterAllUnits ( [ [ f_class , class_name ] , [ f_side , side ] , [ f_not , [ f_hasTask ] ] ] ) ;
 579: LD_ADDR_VAR 0 3
 583: PUSH
 584: LD_INT 25
 586: PUSH
 587: LD_VAR 0 1
 591: PUSH
 592: EMPTY
 593: LIST
 594: LIST
 595: PUSH
 596: LD_INT 22
 598: PUSH
 599: LD_VAR 0 2
 603: PUSH
 604: EMPTY
 605: LIST
 606: LIST
 607: PUSH
 608: LD_INT 3
 610: PUSH
 611: LD_INT 60
 613: PUSH
 614: EMPTY
 615: LIST
 616: PUSH
 617: EMPTY
 618: LIST
 619: LIST
 620: PUSH
 621: EMPTY
 622: LIST
 623: LIST
 624: LIST
 625: PPUSH
 626: CALL_OW 69
 630: ST_TO_ADDR
// end ;
 631: LD_VAR 0 3
 635: RET
// export function getBuildings ( building , side ) ; begin
 636: LD_INT 0
 638: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] ] ) ;
 639: LD_ADDR_VAR 0 3
 643: PUSH
 644: LD_INT 30
 646: PUSH
 647: LD_VAR 0 1
 651: PUSH
 652: EMPTY
 653: LIST
 654: LIST
 655: PUSH
 656: LD_INT 22
 658: PUSH
 659: LD_VAR 0 2
 663: PUSH
 664: EMPTY
 665: LIST
 666: LIST
 667: PUSH
 668: EMPTY
 669: LIST
 670: LIST
 671: PPUSH
 672: CALL_OW 69
 676: ST_TO_ADDR
// end ;
 677: LD_VAR 0 3
 681: RET
// export function getEmptyBuildings ( building , side ) ; begin
 682: LD_INT 0
 684: PPUSH
// result := FilterAllUnits ( [ [ f_btype , building ] , [ f_side , side ] , [ f_empty ] ] ) ;
 685: LD_ADDR_VAR 0 3
 689: PUSH
 690: LD_INT 30
 692: PUSH
 693: LD_VAR 0 1
 697: PUSH
 698: EMPTY
 699: LIST
 700: LIST
 701: PUSH
 702: LD_INT 22
 704: PUSH
 705: LD_VAR 0 2
 709: PUSH
 710: EMPTY
 711: LIST
 712: LIST
 713: PUSH
 714: LD_INT 58
 716: PUSH
 717: EMPTY
 718: LIST
 719: PUSH
 720: EMPTY
 721: LIST
 722: LIST
 723: LIST
 724: PPUSH
 725: CALL_OW 69
 729: ST_TO_ADDR
// end ;
 730: LD_VAR 0 3
 734: RET
// export function getVehicles ( side ) ; begin
 735: LD_INT 0
 737: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_side , side ] ] ) ;
 738: LD_ADDR_VAR 0 2
 742: PUSH
 743: LD_INT 21
 745: PUSH
 746: LD_INT 2
 748: PUSH
 749: EMPTY
 750: LIST
 751: LIST
 752: PUSH
 753: LD_INT 22
 755: PUSH
 756: LD_VAR 0 1
 760: PUSH
 761: EMPTY
 762: LIST
 763: LIST
 764: PUSH
 765: EMPTY
 766: LIST
 767: LIST
 768: PPUSH
 769: CALL_OW 69
 773: ST_TO_ADDR
// end ;
 774: LD_VAR 0 2
 778: RET
// export function getVehiclesArea ( side , area ) ; begin
 779: LD_INT 0
 781: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_side , side ] , [ f_inarea , area ] ] ) ;
 782: LD_ADDR_VAR 0 3
 786: PUSH
 787: LD_INT 21
 789: PUSH
 790: LD_INT 2
 792: PUSH
 793: EMPTY
 794: LIST
 795: LIST
 796: PUSH
 797: LD_INT 22
 799: PUSH
 800: LD_VAR 0 1
 804: PUSH
 805: EMPTY
 806: LIST
 807: LIST
 808: PUSH
 809: LD_INT 95
 811: PUSH
 812: LD_VAR 0 2
 816: PUSH
 817: EMPTY
 818: LIST
 819: LIST
 820: PUSH
 821: EMPTY
 822: LIST
 823: LIST
 824: LIST
 825: PPUSH
 826: CALL_OW 69
 830: ST_TO_ADDR
// end ;
 831: LD_VAR 0 3
 835: RET
// export function getWeaponVehicles ( weapon , side ) ; begin
 836: LD_INT 0
 838: PPUSH
// result := FilterAllUnits ( [ [ f_type , unit_vehicle ] , [ f_weapon , weapon ] , [ f_side , side ] ] ) ;
 839: LD_ADDR_VAR 0 3
 843: PUSH
 844: LD_INT 21
 846: PUSH
 847: LD_INT 2
 849: PUSH
 850: EMPTY
 851: LIST
 852: LIST
 853: PUSH
 854: LD_INT 34
 856: PUSH
 857: LD_VAR 0 1
 861: PUSH
 862: EMPTY
 863: LIST
 864: LIST
 865: PUSH
 866: LD_INT 22
 868: PUSH
 869: LD_VAR 0 2
 873: PUSH
 874: EMPTY
 875: LIST
 876: LIST
 877: PUSH
 878: EMPTY
 879: LIST
 880: LIST
 881: LIST
 882: PPUSH
 883: CALL_OW 69
 887: ST_TO_ADDR
// end ;
 888: LD_VAR 0 3
 892: RET
// export function getAllBuildings ( side ) ; begin
 893: LD_INT 0
 895: PPUSH
// result := FilterAllUnits ( [ [ f_btype , unit_building ] , [ f_side , side ] ] ) ;
 896: LD_ADDR_VAR 0 2
 900: PUSH
 901: LD_INT 30
 903: PUSH
 904: LD_INT 3
 906: PUSH
 907: EMPTY
 908: LIST
 909: LIST
 910: PUSH
 911: LD_INT 22
 913: PUSH
 914: LD_VAR 0 1
 918: PUSH
 919: EMPTY
 920: LIST
 921: LIST
 922: PUSH
 923: EMPTY
 924: LIST
 925: LIST
 926: PPUSH
 927: CALL_OW 69
 931: ST_TO_ADDR
// end ;
 932: LD_VAR 0 2
 936: RET
// export function side ( side ) ; begin
 937: LD_INT 0
 939: PPUSH
// uc_side := side ;
 940: LD_ADDR_OWVAR 20
 944: PUSH
 945: LD_VAR 0 1
 949: ST_TO_ADDR
// end ;
 950: LD_VAR 0 2
 954: RET
// export function LoadVehicles ( name ) ; var vehicleComponents , vehicles , i ; begin
 955: LD_INT 0
 957: PPUSH
 958: PPUSH
 959: PPUSH
 960: PPUSH
// vehicleComponents = LoadVariable ( name , 0 ) ;
 961: LD_ADDR_VAR 0 3
 965: PUSH
 966: LD_VAR 0 1
 970: PPUSH
 971: LD_INT 0
 973: PPUSH
 974: CALL_OW 30
 978: ST_TO_ADDR
// vehicles = [ ] ;
 979: LD_ADDR_VAR 0 4
 983: PUSH
 984: EMPTY
 985: ST_TO_ADDR
// for i = 1 to vehicleComponents do
 986: LD_ADDR_VAR 0 5
 990: PUSH
 991: DOUBLE
 992: LD_INT 1
 994: DEC
 995: ST_TO_ADDR
 996: LD_VAR 0 3
1000: PUSH
1001: FOR_TO
1002: IFFALSE 1112
// begin vc_chassis = vehicleComponents [ i ] ;
1004: LD_ADDR_OWVAR 37
1008: PUSH
1009: LD_VAR 0 3
1013: PUSH
1014: LD_VAR 0 5
1018: ARRAY
1019: ST_TO_ADDR
// vc_control = vehicleComponents [ i + 1 ] ;
1020: LD_ADDR_OWVAR 38
1024: PUSH
1025: LD_VAR 0 3
1029: PUSH
1030: LD_VAR 0 5
1034: PUSH
1035: LD_INT 1
1037: PLUS
1038: ARRAY
1039: ST_TO_ADDR
// vc_engine = vehicleComponents [ i + 2 ] ;
1040: LD_ADDR_OWVAR 39
1044: PUSH
1045: LD_VAR 0 3
1049: PUSH
1050: LD_VAR 0 5
1054: PUSH
1055: LD_INT 2
1057: PLUS
1058: ARRAY
1059: ST_TO_ADDR
// vc_weapon = vehicleComponents [ i + 3 ] ;
1060: LD_ADDR_OWVAR 40
1064: PUSH
1065: LD_VAR 0 3
1069: PUSH
1070: LD_VAR 0 5
1074: PUSH
1075: LD_INT 3
1077: PLUS
1078: ARRAY
1079: ST_TO_ADDR
// vehicles = vehicles ^ CreateVehicle ;
1080: LD_ADDR_VAR 0 4
1084: PUSH
1085: LD_VAR 0 4
1089: PUSH
1090: CALL_OW 45
1094: ADD
1095: ST_TO_ADDR
// i = i + 3 ;
1096: LD_ADDR_VAR 0 5
1100: PUSH
1101: LD_VAR 0 5
1105: PUSH
1106: LD_INT 3
1108: PLUS
1109: ST_TO_ADDR
// end ;
1110: GO 1001
1112: POP
1113: POP
// result := vehicles ;
1114: LD_ADDR_VAR 0 2
1118: PUSH
1119: LD_VAR 0 4
1123: ST_TO_ADDR
// end ;
1124: LD_VAR 0 2
1128: RET
// export function SaveVehicles ( vehicles , name ) ; var vehicleComponents , i ; begin
1129: LD_INT 0
1131: PPUSH
1132: PPUSH
1133: PPUSH
// vehicleComponents = [ ] ;
1134: LD_ADDR_VAR 0 4
1138: PUSH
1139: EMPTY
1140: ST_TO_ADDR
// for i in vehicles do
1141: LD_ADDR_VAR 0 5
1145: PUSH
1146: LD_VAR 0 1
1150: PUSH
1151: FOR_IN
1152: IFFALSE 1213
// vehicleComponents = vehicleComponents ^ [ getChassis ( i ) , getControl ( i ) , getEngine ( i ) , getWeapon ( i ) ] ;
1154: LD_ADDR_VAR 0 4
1158: PUSH
1159: LD_VAR 0 4
1163: PUSH
1164: LD_VAR 0 5
1168: PPUSH
1169: CALL_OW 265
1173: PUSH
1174: LD_VAR 0 5
1178: PPUSH
1179: CALL_OW 263
1183: PUSH
1184: LD_VAR 0 5
1188: PPUSH
1189: CALL_OW 262
1193: PUSH
1194: LD_VAR 0 5
1198: PPUSH
1199: CALL_OW 264
1203: PUSH
1204: EMPTY
1205: LIST
1206: LIST
1207: LIST
1208: LIST
1209: ADD
1210: ST_TO_ADDR
1211: GO 1151
1213: POP
1214: POP
// saveVariable ( vehicleComponents , name ) ;
1215: LD_VAR 0 4
1219: PPUSH
1220: LD_VAR 0 2
1224: PPUSH
1225: CALL_OW 39
// end ;
1229: LD_VAR 0 3
1233: RET
// export function prepareCharacters ( ) ; var i , dif , picked , buildings , soldiers , vehicle , mercenaryVehicles ; begin
1234: LD_INT 0
1236: PPUSH
1237: PPUSH
1238: PPUSH
1239: PPUSH
1240: PPUSH
1241: PPUSH
1242: PPUSH
1243: PPUSH
// dif = [ 0 , 1 , 2 ] [ difficulty ] ;
1244: LD_ADDR_VAR 0 3
1248: PUSH
1249: LD_INT 0
1251: PUSH
1252: LD_INT 1
1254: PUSH
1255: LD_INT 2
1257: PUSH
1258: EMPTY
1259: LIST
1260: LIST
1261: LIST
1262: PUSH
1263: LD_OWVAR 67
1267: ARRAY
1268: ST_TO_ADDR
// stealth = 1 ;
1269: LD_ADDR_EXP 3
1273: PUSH
1274: LD_INT 1
1276: ST_TO_ADDR
// vehicleArrived = 0 ;
1277: LD_ADDR_EXP 5
1281: PUSH
1282: LD_INT 0
1284: ST_TO_ADDR
// scientistInside = 0 ;
1285: LD_ADDR_EXP 6
1289: PUSH
1290: LD_INT 0
1292: ST_TO_ADDR
// warning = 0 ;
1293: LD_ADDR_EXP 7
1297: PUSH
1298: LD_INT 0
1300: ST_TO_ADDR
// endGame = 0 ;
1301: LD_ADDR_EXP 8
1305: PUSH
1306: LD_INT 0
1308: ST_TO_ADDR
// NationSide ( 3 , 3 ) ;
1309: LD_INT 3
1311: PPUSH
1312: LD_INT 3
1314: PPUSH
1315: CALL 380 0 2
// for i = 0 to dif do
1319: LD_ADDR_VAR 0 2
1323: PUSH
1324: DOUBLE
1325: LD_INT 0
1327: DEC
1328: ST_TO_ADDR
1329: LD_VAR 0 3
1333: PUSH
1334: FOR_TO
1335: IFFALSE 1438
// PlaceUnitArea ( createChar (  ,  , class_soldier , 50 , [ dif + 4 , rand ( 0 , dif + 2 ) , rand ( 1 , dif + 2 ) , rand ( 0 , dif + 1 ) ] ,  ,  ) , commanderArea , false ) ;
1337: LD_STRING 
1339: PPUSH
1340: LD_STRING 
1342: PPUSH
1343: LD_INT 1
1345: PPUSH
1346: LD_INT 50
1348: PPUSH
1349: LD_VAR 0 3
1353: PUSH
1354: LD_INT 4
1356: PLUS
1357: PUSH
1358: LD_INT 0
1360: PPUSH
1361: LD_VAR 0 3
1365: PUSH
1366: LD_INT 2
1368: PLUS
1369: PPUSH
1370: CALL_OW 12
1374: PUSH
1375: LD_INT 1
1377: PPUSH
1378: LD_VAR 0 3
1382: PUSH
1383: LD_INT 2
1385: PLUS
1386: PPUSH
1387: CALL_OW 12
1391: PUSH
1392: LD_INT 0
1394: PPUSH
1395: LD_VAR 0 3
1399: PUSH
1400: LD_INT 1
1402: PLUS
1403: PPUSH
1404: CALL_OW 12
1408: PUSH
1409: EMPTY
1410: LIST
1411: LIST
1412: LIST
1413: LIST
1414: PPUSH
1415: LD_STRING 
1417: PPUSH
1418: LD_STRING 
1420: PPUSH
1421: CALL 198 0 7
1425: PPUSH
1426: LD_INT 7
1428: PPUSH
1429: LD_INT 0
1431: PPUSH
1432: CALL_OW 49
1436: GO 1334
1438: POP
1439: POP
// commanders = commanders ^ getUnits ( 3 ) ;
1440: LD_ADDR_EXP 2
1444: PUSH
1445: LD_EXP 2
1449: PUSH
1450: LD_INT 3
1452: PPUSH
1453: CALL 408 0 1
1457: ADD
1458: ST_TO_ADDR
// for i = 0 to 12 + dif * 4 do
1459: LD_ADDR_VAR 0 2
1463: PUSH
1464: DOUBLE
1465: LD_INT 0
1467: DEC
1468: ST_TO_ADDR
1469: LD_INT 12
1471: PUSH
1472: LD_VAR 0 3
1476: PUSH
1477: LD_INT 4
1479: MUL
1480: PLUS
1481: PUSH
1482: FOR_TO
1483: IFFALSE 1586
// PlaceUnitArea ( createChar (  ,  , class_soldier , 0 , [ dif + 2 , rand ( 0 , dif + 1 ) , rand ( 1 , dif + 1 ) , rand ( 0 , dif + 1 ) ] ,  ,  ) , soldierArea , false ) ;
1485: LD_STRING 
1487: PPUSH
1488: LD_STRING 
1490: PPUSH
1491: LD_INT 1
1493: PPUSH
1494: LD_INT 0
1496: PPUSH
1497: LD_VAR 0 3
1501: PUSH
1502: LD_INT 2
1504: PLUS
1505: PUSH
1506: LD_INT 0
1508: PPUSH
1509: LD_VAR 0 3
1513: PUSH
1514: LD_INT 1
1516: PLUS
1517: PPUSH
1518: CALL_OW 12
1522: PUSH
1523: LD_INT 1
1525: PPUSH
1526: LD_VAR 0 3
1530: PUSH
1531: LD_INT 1
1533: PLUS
1534: PPUSH
1535: CALL_OW 12
1539: PUSH
1540: LD_INT 0
1542: PPUSH
1543: LD_VAR 0 3
1547: PUSH
1548: LD_INT 1
1550: PLUS
1551: PPUSH
1552: CALL_OW 12
1556: PUSH
1557: EMPTY
1558: LIST
1559: LIST
1560: LIST
1561: LIST
1562: PPUSH
1563: LD_STRING 
1565: PPUSH
1566: LD_STRING 
1568: PPUSH
1569: CALL 198 0 7
1573: PPUSH
1574: LD_INT 6
1576: PPUSH
1577: LD_INT 0
1579: PPUSH
1580: CALL_OW 49
1584: GO 1482
1586: POP
1587: POP
// soldiers = getClassUnits ( class_soldier , 3 ) diff commanders ;
1588: LD_ADDR_VAR 0 6
1592: PUSH
1593: LD_INT 1
1595: PPUSH
1596: LD_INT 3
1598: PPUSH
1599: CALL 576 0 2
1603: PUSH
1604: LD_EXP 2
1608: DIFF
1609: ST_TO_ADDR
// for i = 0 to getBuildings ( b_breastwork , 3 ) + dif + 1 do
1610: LD_ADDR_VAR 0 2
1614: PUSH
1615: DOUBLE
1616: LD_INT 0
1618: DEC
1619: ST_TO_ADDR
1620: LD_INT 31
1622: PPUSH
1623: LD_INT 3
1625: PPUSH
1626: CALL 636 0 2
1630: PUSH
1631: LD_VAR 0 3
1635: PLUS
1636: PUSH
1637: LD_INT 1
1639: PLUS
1640: PUSH
1641: FOR_TO
1642: IFFALSE 1737
// PlaceUnitArea ( createChar (  ,  , class_soldier , 0 , [ dif , rand ( 0 , dif + 1 ) , rand ( 1 , dif + 1 ) , rand ( 0 , dif ) ] ,  ,  ) , soldierBreastworkArea , false ) ;
1644: LD_STRING 
1646: PPUSH
1647: LD_STRING 
1649: PPUSH
1650: LD_INT 1
1652: PPUSH
1653: LD_INT 0
1655: PPUSH
1656: LD_VAR 0 3
1660: PUSH
1661: LD_INT 0
1663: PPUSH
1664: LD_VAR 0 3
1668: PUSH
1669: LD_INT 1
1671: PLUS
1672: PPUSH
1673: CALL_OW 12
1677: PUSH
1678: LD_INT 1
1680: PPUSH
1681: LD_VAR 0 3
1685: PUSH
1686: LD_INT 1
1688: PLUS
1689: PPUSH
1690: CALL_OW 12
1694: PUSH
1695: LD_INT 0
1697: PPUSH
1698: LD_VAR 0 3
1702: PPUSH
1703: CALL_OW 12
1707: PUSH
1708: EMPTY
1709: LIST
1710: LIST
1711: LIST
1712: LIST
1713: PPUSH
1714: LD_STRING 
1716: PPUSH
1717: LD_STRING 
1719: PPUSH
1720: CALL 198 0 7
1724: PPUSH
1725: LD_INT 9
1727: PPUSH
1728: LD_INT 0
1730: PPUSH
1731: CALL_OW 49
1735: GO 1641
1737: POP
1738: POP
// for i in getEmptyBuildings ( b_breastwork , 3 ) do
1739: LD_ADDR_VAR 0 2
1743: PUSH
1744: LD_INT 31
1746: PPUSH
1747: LD_INT 3
1749: PPUSH
1750: CALL 682 0 2
1754: PUSH
1755: FOR_IN
1756: IFFALSE 1790
// AddComEnterUnit ( nearestUnitToUnit ( getUnitsArea ( 3 , soldierBreastworkArea ) , i ) , i ) ;
1758: LD_INT 3
1760: PPUSH
1761: LD_INT 9
1763: PPUSH
1764: CALL 452 0 2
1768: PPUSH
1769: LD_VAR 0 2
1773: PPUSH
1774: CALL_OW 74
1778: PPUSH
1779: LD_VAR 0 2
1783: PPUSH
1784: CALL_OW 180
1788: GO 1755
1790: POP
1791: POP
// for i = 0 to dif + 2 do
1792: LD_ADDR_VAR 0 2
1796: PUSH
1797: DOUBLE
1798: LD_INT 0
1800: DEC
1801: ST_TO_ADDR
1802: LD_VAR 0 3
1806: PUSH
1807: LD_INT 2
1809: PLUS
1810: PUSH
1811: FOR_TO
1812: IFFALSE 1919
// PlaceUnitArea ( createChar (  ,  , class_scientistic , 0 , [ rand ( 0 , dif ) , rand ( 0 , dif + 1 ) , rand ( 1 , dif + 1 ) , rand ( 2 , dif + 2 ) ] ,  ,  ) , scientistArea , false ) ;
1814: LD_STRING 
1816: PPUSH
1817: LD_STRING 
1819: PPUSH
1820: LD_INT 4
1822: PPUSH
1823: LD_INT 0
1825: PPUSH
1826: LD_INT 0
1828: PPUSH
1829: LD_VAR 0 3
1833: PPUSH
1834: CALL_OW 12
1838: PUSH
1839: LD_INT 0
1841: PPUSH
1842: LD_VAR 0 3
1846: PUSH
1847: LD_INT 1
1849: PLUS
1850: PPUSH
1851: CALL_OW 12
1855: PUSH
1856: LD_INT 1
1858: PPUSH
1859: LD_VAR 0 3
1863: PUSH
1864: LD_INT 1
1866: PLUS
1867: PPUSH
1868: CALL_OW 12
1872: PUSH
1873: LD_INT 2
1875: PPUSH
1876: LD_VAR 0 3
1880: PUSH
1881: LD_INT 2
1883: PLUS
1884: PPUSH
1885: CALL_OW 12
1889: PUSH
1890: EMPTY
1891: LIST
1892: LIST
1893: LIST
1894: LIST
1895: PPUSH
1896: LD_STRING 
1898: PPUSH
1899: LD_STRING 
1901: PPUSH
1902: CALL 198 0 7
1906: PPUSH
1907: LD_INT 18
1909: PPUSH
1910: LD_INT 0
1912: PPUSH
1913: CALL_OW 49
1917: GO 1811
1919: POP
1920: POP
// for i = 0 to dif + 2 do
1921: LD_ADDR_VAR 0 2
1925: PUSH
1926: DOUBLE
1927: LD_INT 0
1929: DEC
1930: ST_TO_ADDR
1931: LD_VAR 0 3
1935: PUSH
1936: LD_INT 2
1938: PLUS
1939: PUSH
1940: FOR_TO
1941: IFFALSE 2044
// PlaceUnitArea ( createChar (  ,  , class_mechanic , 0 , [ rand ( 0 , dif ) , rand ( 0 , dif + 1 ) , rand ( 1 , dif + 3 ) , rand ( 0 , dif ) ] ,  ,  ) , mechanicArea , false ) ;
1943: LD_STRING 
1945: PPUSH
1946: LD_STRING 
1948: PPUSH
1949: LD_INT 3
1951: PPUSH
1952: LD_INT 0
1954: PPUSH
1955: LD_INT 0
1957: PPUSH
1958: LD_VAR 0 3
1962: PPUSH
1963: CALL_OW 12
1967: PUSH
1968: LD_INT 0
1970: PPUSH
1971: LD_VAR 0 3
1975: PUSH
1976: LD_INT 1
1978: PLUS
1979: PPUSH
1980: CALL_OW 12
1984: PUSH
1985: LD_INT 1
1987: PPUSH
1988: LD_VAR 0 3
1992: PUSH
1993: LD_INT 3
1995: PLUS
1996: PPUSH
1997: CALL_OW 12
2001: PUSH
2002: LD_INT 0
2004: PPUSH
2005: LD_VAR 0 3
2009: PPUSH
2010: CALL_OW 12
2014: PUSH
2015: EMPTY
2016: LIST
2017: LIST
2018: LIST
2019: LIST
2020: PPUSH
2021: LD_STRING 
2023: PPUSH
2024: LD_STRING 
2026: PPUSH
2027: CALL 198 0 7
2031: PPUSH
2032: LD_INT 20
2034: PPUSH
2035: LD_INT 0
2037: PPUSH
2038: CALL_OW 49
2042: GO 1940
2044: POP
2045: POP
// vehicle = createVeh ( ru_medium_wheeled , control_manual , engine_combustion , ru_cargo_bay , 72 ) ;
2046: LD_ADDR_VAR 0 7
2050: PUSH
2051: LD_INT 21
2053: PPUSH
2054: LD_INT 1
2056: PPUSH
2057: LD_INT 1
2059: PPUSH
2060: LD_INT 51
2062: PPUSH
2063: LD_INT 72
2065: PPUSH
2066: CALL 312 0 5
2070: ST_TO_ADDR
// PlaceHumanInUnit ( createChar (  ,  , class_soldier , 0 , [ rand ( 2 , 3 ) , rand ( 0 , 2 ) , rand ( 0 , 2 ) , rand ( 0 , 2 ) ] ,  ,  ) , vehicle ) ;
2071: LD_STRING 
2073: PPUSH
2074: LD_STRING 
2076: PPUSH
2077: LD_INT 1
2079: PPUSH
2080: LD_INT 0
2082: PPUSH
2083: LD_INT 2
2085: PPUSH
2086: LD_INT 3
2088: PPUSH
2089: CALL_OW 12
2093: PUSH
2094: LD_INT 0
2096: PPUSH
2097: LD_INT 2
2099: PPUSH
2100: CALL_OW 12
2104: PUSH
2105: LD_INT 0
2107: PPUSH
2108: LD_INT 2
2110: PPUSH
2111: CALL_OW 12
2115: PUSH
2116: LD_INT 0
2118: PPUSH
2119: LD_INT 2
2121: PPUSH
2122: CALL_OW 12
2126: PUSH
2127: EMPTY
2128: LIST
2129: LIST
2130: LIST
2131: LIST
2132: PPUSH
2133: LD_STRING 
2135: PPUSH
2136: LD_STRING 
2138: PPUSH
2139: CALL 198 0 7
2143: PPUSH
2144: LD_VAR 0 7
2148: PPUSH
2149: CALL_OW 52
// PlaceUnitArea ( vehicle , cargoArea , false ) ;
2153: LD_VAR 0 7
2157: PPUSH
2158: LD_INT 21
2160: PPUSH
2161: LD_INT 0
2163: PPUSH
2164: CALL_OW 49
// side ( 7 ) ;
2168: LD_INT 7
2170: PPUSH
2171: CALL 937 0 1
// if difficulty = 1 then
2175: LD_OWVAR 67
2179: PUSH
2180: LD_INT 1
2182: EQUAL
2183: IFFALSE 2280
// begin setLives ( getUnits ( 7 ) , 400 ) ;
2185: LD_INT 7
2187: PPUSH
2188: CALL 408 0 1
2192: PPUSH
2193: LD_INT 400
2195: PPUSH
2196: CALL_OW 234
// buildings = getBuildings ( b_armoury , 3 ) ;
2200: LD_ADDR_VAR 0 5
2204: PUSH
2205: LD_INT 4
2207: PPUSH
2208: LD_INT 3
2210: PPUSH
2211: CALL 636 0 2
2215: ST_TO_ADDR
// PlaceHumanInUnit ( createChar (  ,  , class_scientistic , 0 , [ 0 , 2 , 1 , 5 ] ,  ,  ) , buildings [ rand ( 1 , buildings ) ] ) ;
2216: LD_STRING 
2218: PPUSH
2219: LD_STRING 
2221: PPUSH
2222: LD_INT 4
2224: PPUSH
2225: LD_INT 0
2227: PPUSH
2228: LD_INT 0
2230: PUSH
2231: LD_INT 2
2233: PUSH
2234: LD_INT 1
2236: PUSH
2237: LD_INT 5
2239: PUSH
2240: EMPTY
2241: LIST
2242: LIST
2243: LIST
2244: LIST
2245: PPUSH
2246: LD_STRING 
2248: PPUSH
2249: LD_STRING 
2251: PPUSH
2252: CALL 198 0 7
2256: PPUSH
2257: LD_VAR 0 5
2261: PUSH
2262: LD_INT 1
2264: PPUSH
2265: LD_VAR 0 5
2269: PPUSH
2270: CALL_OW 12
2274: ARRAY
2275: PPUSH
2276: CALL_OW 52
// end ; if difficulty = 2 then
2280: LD_OWVAR 67
2284: PUSH
2285: LD_INT 2
2287: EQUAL
2288: IFFALSE 2347
// begin vc_chassis = ar_medium_trike ;
2290: LD_ADDR_OWVAR 37
2294: PUSH
2295: LD_INT 13
2297: ST_TO_ADDR
// vc_control = control_manual ;
2298: LD_ADDR_OWVAR 38
2302: PUSH
2303: LD_INT 1
2305: ST_TO_ADDR
// vc_engine = engine_combustion ;
2306: LD_ADDR_OWVAR 39
2310: PUSH
2311: LD_INT 1
2313: ST_TO_ADDR
// vc_fuel_battery = 0 ;
2314: LD_ADDR_OWVAR 41
2318: PUSH
2319: LD_INT 0
2321: ST_TO_ADDR
// vc_weapon = ar_control_tower ;
2322: LD_ADDR_OWVAR 40
2326: PUSH
2327: LD_INT 31
2329: ST_TO_ADDR
// PlaceUnitArea ( CreateVehicle , protectArea , false ) ;
2330: CALL_OW 45
2334: PPUSH
2335: LD_INT 1
2337: PPUSH
2338: LD_INT 0
2340: PPUSH
2341: CALL_OW 49
// end else
2345: GO 2476
// begin NationSide ( 3 , 3 ) ;
2347: LD_INT 3
2349: PPUSH
2350: LD_INT 3
2352: PPUSH
2353: CALL 380 0 2
// for i in getBuildings ( b_breastwork , 7 ) do
2357: LD_ADDR_VAR 0 2
2361: PUSH
2362: LD_INT 31
2364: PPUSH
2365: LD_INT 7
2367: PPUSH
2368: CALL 636 0 2
2372: PUSH
2373: FOR_IN
2374: IFFALSE 2387
// DestroyUnit ( i ) ;
2376: LD_VAR 0 2
2380: PPUSH
2381: CALL_OW 65
2385: GO 2373
2387: POP
2388: POP
// bc_type = b_breastwork ;
2389: LD_ADDR_OWVAR 42
2393: PUSH
2394: LD_INT 31
2396: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 108 , 93 , 5 ) ;
2397: LD_INT 108
2399: PPUSH
2400: LD_INT 93
2402: PPUSH
2403: LD_INT 5
2405: PPUSH
2406: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 121 , 80 , 5 ) ;
2410: LD_INT 121
2412: PPUSH
2413: LD_INT 80
2415: PPUSH
2416: LD_INT 5
2418: PPUSH
2419: CALL_OW 47
// for i in getEmptyBuildings ( b_breastwork , 3 ) do
2423: LD_ADDR_VAR 0 2
2427: PUSH
2428: LD_INT 31
2430: PPUSH
2431: LD_INT 3
2433: PPUSH
2434: CALL 682 0 2
2438: PUSH
2439: FOR_IN
2440: IFFALSE 2474
// AddComEnterUnit ( nearestUnitToUnit ( getUnitsArea ( 3 , soldierBreastworkArea ) , i ) , i ) ;
2442: LD_INT 3
2444: PPUSH
2445: LD_INT 9
2447: PPUSH
2448: CALL 452 0 2
2452: PPUSH
2453: LD_VAR 0 2
2457: PPUSH
2458: CALL_OW 74
2462: PPUSH
2463: LD_VAR 0 2
2467: PPUSH
2468: CALL_OW 180
2472: GO 2439
2474: POP
2475: POP
// end ; AddComHold ( soldiers ) ;
2476: LD_VAR 0 6
2480: PPUSH
2481: CALL_OW 200
// AddComTurnUnit ( soldiers , commanders [ 1 ] ) ;
2485: LD_VAR 0 6
2489: PPUSH
2490: LD_EXP 2
2494: PUSH
2495: LD_INT 1
2497: ARRAY
2498: PPUSH
2499: CALL_OW 179
// side ( 8 ) ;
2503: LD_INT 8
2505: PPUSH
2506: CALL 937 0 1
// mercenaries = LoadCharacter ( mercenaries , 0 , 0 ) ;
2510: LD_ADDR_EXP 4
2514: PUSH
2515: LD_STRING mercenaries
2517: PPUSH
2518: LD_INT 0
2520: PPUSH
2521: LD_INT 0
2523: PPUSH
2524: CALL_OW 527
2528: ST_TO_ADDR
// picked := CharacterSelection (  , 1 , 4 - dif , [ sel_changeable , sel_not_hired , sel_change_class ] ^ mercenaries , [ class_soldier , class_mechanic , class_engineer , class_scientistic ] ) ;
2529: LD_ADDR_VAR 0 4
2533: PUSH
2534: LD_STRING 
2536: PPUSH
2537: LD_INT 1
2539: PPUSH
2540: LD_INT 4
2542: PUSH
2543: LD_VAR 0 3
2547: MINUS
2548: PPUSH
2549: LD_INT -3
2551: PUSH
2552: LD_INT -2
2554: PUSH
2555: LD_INT -5
2557: PUSH
2558: EMPTY
2559: LIST
2560: LIST
2561: LIST
2562: PUSH
2563: LD_EXP 4
2567: ADD
2568: PPUSH
2569: LD_INT 1
2571: PUSH
2572: LD_INT 3
2574: PUSH
2575: LD_INT 2
2577: PUSH
2578: LD_INT 4
2580: PUSH
2581: EMPTY
2582: LIST
2583: LIST
2584: LIST
2585: LIST
2586: PPUSH
2587: CALL_OW 42
2591: ST_TO_ADDR
// mercenaries := mercenaries diff picked ;
2592: LD_ADDR_EXP 4
2596: PUSH
2597: LD_EXP 4
2601: PUSH
2602: LD_VAR 0 4
2606: DIFF
2607: ST_TO_ADDR
// dif = [ easySplitArea , normalSplitArea , hardSplitArea ] [ difficulty ] ;
2608: LD_ADDR_VAR 0 3
2612: PUSH
2613: LD_INT 11
2615: PUSH
2616: LD_INT 4
2618: PUSH
2619: LD_INT 8
2621: PUSH
2622: EMPTY
2623: LIST
2624: LIST
2625: LIST
2626: PUSH
2627: LD_OWVAR 67
2631: ARRAY
2632: ST_TO_ADDR
// for i in picked do
2633: LD_ADDR_VAR 0 2
2637: PUSH
2638: LD_VAR 0 4
2642: PUSH
2643: FOR_IN
2644: IFFALSE 2665
// PlaceUnitArea ( i , dif , false ) ;
2646: LD_VAR 0 2
2650: PPUSH
2651: LD_VAR 0 3
2655: PPUSH
2656: LD_INT 0
2658: PPUSH
2659: CALL_OW 49
2663: GO 2643
2665: POP
2666: POP
// comHold ( getUnits ( 8 ) ) ;
2667: LD_INT 8
2669: PPUSH
2670: CALL 408 0 1
2674: PPUSH
2675: CALL_OW 140
// mercenaryVehicles = LoadVehicles ( vehicles ) ;
2679: LD_ADDR_VAR 0 8
2683: PUSH
2684: LD_STRING vehicles
2686: PPUSH
2687: CALL 955 0 1
2691: ST_TO_ADDR
// for i in mercenaryVehicles do
2692: LD_ADDR_VAR 0 2
2696: PUSH
2697: LD_VAR 0 8
2701: PUSH
2702: FOR_IN
2703: IFFALSE 2722
// PlaceUnitArea ( i , mercenaryVehicleArea , false ) ;
2705: LD_VAR 0 2
2709: PPUSH
2710: LD_INT 15
2712: PPUSH
2713: LD_INT 0
2715: PPUSH
2716: CALL_OW 49
2720: GO 2702
2722: POP
2723: POP
// if difficulty = 3 then
2724: LD_OWVAR 67
2728: PUSH
2729: LD_INT 3
2731: EQUAL
2732: IFFALSE 2767
// begin AddComTurnUnit ( picked , commanders [ 1 ] ) ;
2734: LD_VAR 0 4
2738: PPUSH
2739: LD_EXP 2
2743: PUSH
2744: LD_INT 1
2746: ARRAY
2747: PPUSH
2748: CALL_OW 179
// centerNowOnUnits ( commanders [ 1 ] ) ;
2752: LD_EXP 2
2756: PUSH
2757: LD_INT 1
2759: ARRAY
2760: PPUSH
2761: CALL_OW 87
// end else
2765: GO 2776
// centerNowOnUnits ( picked ) ;
2767: LD_VAR 0 4
2771: PPUSH
2772: CALL_OW 87
// say ( picked [ 1 ] , difficulty ) ;
2776: LD_VAR 0 4
2780: PUSH
2781: LD_INT 1
2783: ARRAY
2784: PPUSH
2785: LD_OWVAR 67
2789: PPUSH
2790: CALL_OW 88
// dif = [ Easy , Normal , Hard ] [ difficulty ] ;
2794: LD_ADDR_VAR 0 3
2798: PUSH
2799: LD_STRING Easy
2801: PUSH
2802: LD_STRING Normal
2804: PUSH
2805: LD_STRING Hard
2807: PUSH
2808: EMPTY
2809: LIST
2810: LIST
2811: LIST
2812: PUSH
2813: LD_OWVAR 67
2817: ARRAY
2818: ST_TO_ADDR
// ChangeMissionObjectives ( dif ) ;
2819: LD_VAR 0 3
2823: PPUSH
2824: CALL_OW 337
// ChangeMissionObjectives ( Optional ) ;
2828: LD_STRING Optional
2830: PPUSH
2831: CALL_OW 337
// SaveForQuickRestart ;
2835: CALL_OW 22
// wait ( 0 0$09 ) ;
2839: LD_INT 315
2841: PPUSH
2842: CALL_OW 67
// AddComFree ( soldiers ) ;
2846: LD_VAR 0 6
2850: PPUSH
2851: CALL_OW 199
// end ;
2855: LD_VAR 0 1
2859: RET
// every 0 0$01.5 do var buildings , i ;
2860: GO 2862
2862: DISABLE
2863: LD_INT 0
2865: PPUSH
2866: PPUSH
// begin if getClassUnitsOutside ( class_soldier , 3 ) then
2867: LD_INT 1
2869: PPUSH
2870: LD_INT 3
2872: PPUSH
2873: CALL 509 0 2
2877: IFFALSE 2946
// begin buildings = getEmptyBuildings ( b_armoury , 3 ) ;
2879: LD_ADDR_VAR 0 1
2883: PUSH
2884: LD_INT 4
2886: PPUSH
2887: LD_INT 3
2889: PPUSH
2890: CALL 682 0 2
2894: ST_TO_ADDR
// for i in getClassUnitsOutside ( class_soldier , 3 ) do
2895: LD_ADDR_VAR 0 2
2899: PUSH
2900: LD_INT 1
2902: PPUSH
2903: LD_INT 3
2905: PPUSH
2906: CALL 509 0 2
2910: PUSH
2911: FOR_IN
2912: IFFALSE 2944
// ComEnterUnit ( i , buildings [ rand ( 1 , buildings ) ] ) ;
2914: LD_VAR 0 2
2918: PPUSH
2919: LD_VAR 0 1
2923: PUSH
2924: LD_INT 1
2926: PPUSH
2927: LD_VAR 0 1
2931: PPUSH
2932: CALL_OW 12
2936: ARRAY
2937: PPUSH
2938: CALL_OW 120
2942: GO 2911
2944: POP
2945: POP
// end ; if getClassUnitsOutside ( class_mechanic , 3 ) then
2946: LD_INT 3
2948: PPUSH
2949: LD_INT 3
2951: PPUSH
2952: CALL 509 0 2
2956: IFFALSE 3025
// begin buildings = getEmptyBuildings ( b_factory , 3 ) ;
2958: LD_ADDR_VAR 0 1
2962: PUSH
2963: LD_INT 3
2965: PPUSH
2966: LD_INT 3
2968: PPUSH
2969: CALL 682 0 2
2973: ST_TO_ADDR
// for i in getClassUnitsOutside ( class_mechanic , 3 ) do
2974: LD_ADDR_VAR 0 2
2978: PUSH
2979: LD_INT 3
2981: PPUSH
2982: LD_INT 3
2984: PPUSH
2985: CALL 509 0 2
2989: PUSH
2990: FOR_IN
2991: IFFALSE 3023
// ComEnterUnit ( i , buildings [ rand ( 1 , buildings ) ] ) ;
2993: LD_VAR 0 2
2997: PPUSH
2998: LD_VAR 0 1
3002: PUSH
3003: LD_INT 1
3005: PPUSH
3006: LD_VAR 0 1
3010: PPUSH
3011: CALL_OW 12
3015: ARRAY
3016: PPUSH
3017: CALL_OW 120
3021: GO 2990
3023: POP
3024: POP
// end ; if getClassUnitsOutside ( class_scientistic , 3 ) then
3025: LD_INT 4
3027: PPUSH
3028: LD_INT 3
3030: PPUSH
3031: CALL 509 0 2
3035: IFFALSE 3104
// begin buildings = getEmptyBuildings ( b_lab , 3 ) ;
3037: LD_ADDR_VAR 0 1
3041: PUSH
3042: LD_INT 6
3044: PPUSH
3045: LD_INT 3
3047: PPUSH
3048: CALL 682 0 2
3052: ST_TO_ADDR
// for i in getClassUnitsOutside ( class_scientistic , 3 ) do
3053: LD_ADDR_VAR 0 2
3057: PUSH
3058: LD_INT 4
3060: PPUSH
3061: LD_INT 3
3063: PPUSH
3064: CALL 509 0 2
3068: PUSH
3069: FOR_IN
3070: IFFALSE 3102
// ComEnterUnit ( i , buildings [ rand ( 1 , buildings ) ] ) ;
3072: LD_VAR 0 2
3076: PPUSH
3077: LD_VAR 0 1
3081: PUSH
3082: LD_INT 1
3084: PPUSH
3085: LD_VAR 0 1
3089: PPUSH
3090: CALL_OW 12
3094: ARRAY
3095: PPUSH
3096: CALL_OW 120
3100: GO 3069
3102: POP
3103: POP
// end ; end ;
3104: PPOPN 2
3106: END
// every 0 0$06 do var buildings , i ;
3107: GO 3109
3109: DISABLE
3110: LD_INT 0
3112: PPUSH
3113: PPUSH
// begin if getClassUnitsOutside ( class_soldier , 3 ) then
3114: LD_INT 1
3116: PPUSH
3117: LD_INT 3
3119: PPUSH
3120: CALL 509 0 2
3124: IFFALSE 3261
// begin buildings = getBuildings ( b_armoury , 3 ) ;
3126: LD_ADDR_VAR 0 1
3130: PUSH
3131: LD_INT 4
3133: PPUSH
3134: LD_INT 3
3136: PPUSH
3137: CALL 636 0 2
3141: ST_TO_ADDR
// for i in getClassUnitsOutside ( class_soldier , 3 ) do
3142: LD_ADDR_VAR 0 2
3146: PUSH
3147: LD_INT 1
3149: PPUSH
3150: LD_INT 3
3152: PPUSH
3153: CALL 509 0 2
3157: PUSH
3158: FOR_IN
3159: IFFALSE 3259
// begin buildings = buildings [ rand ( 1 , buildings ) ] ;
3161: LD_ADDR_VAR 0 1
3165: PUSH
3166: LD_VAR 0 1
3170: PUSH
3171: LD_INT 1
3173: PPUSH
3174: LD_VAR 0 1
3178: PPUSH
3179: CALL_OW 12
3183: ARRAY
3184: ST_TO_ADDR
// ComAgressiveMove ( i , getX ( buildings ) , getY ( buildings ) ) ;
3185: LD_VAR 0 2
3189: PPUSH
3190: LD_VAR 0 1
3194: PPUSH
3195: CALL_OW 250
3199: PPUSH
3200: LD_VAR 0 1
3204: PPUSH
3205: CALL_OW 251
3209: PPUSH
3210: CALL_OW 114
// AddComAgressiveMove ( i , getX ( buildings ) , getY ( buildings ) ) ;
3214: LD_VAR 0 2
3218: PPUSH
3219: LD_VAR 0 1
3223: PPUSH
3224: CALL_OW 250
3228: PPUSH
3229: LD_VAR 0 1
3233: PPUSH
3234: CALL_OW 251
3238: PPUSH
3239: CALL_OW 174
// AddComEnterUnit ( i , buildings ) ;
3243: LD_VAR 0 2
3247: PPUSH
3248: LD_VAR 0 1
3252: PPUSH
3253: CALL_OW 180
// end ;
3257: GO 3158
3259: POP
3260: POP
// end ; enable ;
3261: ENABLE
// end ;
3262: PPOPN 2
3264: END
// every 0 0$01 trigger objective do
3265: LD_EXP 1
3269: IFFALSE 3290
3271: GO 3273
3273: DISABLE
// SetAttitude ( 3 , 8 , att_enemy , true ) ;
3274: LD_INT 3
3276: PPUSH
3277: LD_INT 8
3279: PPUSH
3280: LD_INT 2
3282: PPUSH
3283: LD_INT 1
3285: PPUSH
3286: CALL_OW 80
3290: END
// every 0 0$01 trigger getClassUnitsOutside ( class_scientistic , 7 ) and scientistInside do
3291: LD_INT 4
3293: PPUSH
3294: LD_INT 7
3296: PPUSH
3297: CALL 509 0 2
3301: PUSH
3302: LD_EXP 6
3306: AND
3307: IFFALSE 3428
3309: GO 3311
3311: DISABLE
// begin if not objective then
3312: LD_EXP 1
3316: NOT
3317: IFFALSE 3384
// begin say ( getUnits ( 8 ) [ 1 ] , EasyContinue ) ;
3319: LD_INT 8
3321: PPUSH
3322: CALL 408 0 1
3326: PUSH
3327: LD_INT 1
3329: ARRAY
3330: PPUSH
3331: LD_STRING EasyContinue
3333: PPUSH
3334: CALL_OW 88
// ChangeMissionObjectives ( EasyContinue ) ;
3338: LD_STRING EasyContinue
3340: PPUSH
3341: CALL_OW 337
// objective = 1 ;
3345: LD_ADDR_EXP 1
3349: PUSH
3350: LD_INT 1
3352: ST_TO_ADDR
// SetAttitude ( 3 , 7 , att_enemy , true ) ;
3353: LD_INT 3
3355: PPUSH
3356: LD_INT 7
3358: PPUSH
3359: LD_INT 2
3361: PPUSH
3362: LD_INT 1
3364: PPUSH
3365: CALL_OW 80
// wait ( 0 0$05 ) ;
3369: LD_INT 175
3371: PPUSH
3372: CALL_OW 67
// objective = 2 ;
3376: LD_ADDR_EXP 1
3380: PUSH
3381: LD_INT 2
3383: ST_TO_ADDR
// end ; comMoveUnit ( getClassUnitsOutside ( class_scientistic , 7 ) , nearestUnitToUnit ( getUnits ( 8 ) , getClassUnitsOutside ( class_scientistic , 7 ) [ 1 ] ) ) ;
3384: LD_INT 4
3386: PPUSH
3387: LD_INT 7
3389: PPUSH
3390: CALL 509 0 2
3394: PPUSH
3395: LD_INT 8
3397: PPUSH
3398: CALL 408 0 1
3402: PPUSH
3403: LD_INT 4
3405: PPUSH
3406: LD_INT 7
3408: PPUSH
3409: CALL 509 0 2
3413: PUSH
3414: LD_INT 1
3416: ARRAY
3417: PPUSH
3418: CALL_OW 74
3422: PPUSH
3423: CALL_OW 112
// enable ;
3427: ENABLE
// end ;
3428: END
// every 0 0$01 do var scientist ;
3429: GO 3431
3431: DISABLE
3432: LD_INT 0
3434: PPUSH
// begin scientist = getClassUnits ( class_scientistic , 7 ) ;
3435: LD_ADDR_VAR 0 1
3439: PUSH
3440: LD_INT 4
3442: PPUSH
3443: LD_INT 7
3445: PPUSH
3446: CALL 576 0 2
3450: ST_TO_ADDR
// if scientist then
3451: LD_VAR 0 1
3455: IFFALSE 3492
// begin scientist = scientist [ 1 ] ;
3457: LD_ADDR_VAR 0 1
3461: PUSH
3462: LD_VAR 0 1
3466: PUSH
3467: LD_INT 1
3469: ARRAY
3470: ST_TO_ADDR
// if IsInUnit ( scientist ) then
3471: LD_VAR 0 1
3475: PPUSH
3476: CALL_OW 310
3480: IFFALSE 3492
// begin scientistInside = 1 ;
3482: LD_ADDR_EXP 6
3486: PUSH
3487: LD_INT 1
3489: ST_TO_ADDR
// exit ;
3490: GO 3493
// end ; end ; enable ;
3492: ENABLE
// end ;
3493: PPOPN 1
3495: END
// every 0 0$01 trigger not getUnits ( 7 ) and difficulty = 1 do
3496: LD_INT 7
3498: PPUSH
3499: CALL 408 0 1
3503: NOT
3504: PUSH
3505: LD_OWVAR 67
3509: PUSH
3510: LD_INT 1
3512: EQUAL
3513: AND
3514: IFFALSE 3526
3516: GO 3518
3518: DISABLE
// YouLost ( objective ) ;
3519: LD_STRING objective
3521: PPUSH
3522: CALL_OW 104
3526: END
// every 0 0$01 trigger not getWeaponVehicles ( ar_control_tower , 7 ) and getWeaponVehicles ( ar_control_tower , 8 ) and difficulty = 2 do
3527: LD_INT 31
3529: PPUSH
3530: LD_INT 7
3532: PPUSH
3533: CALL 836 0 2
3537: NOT
3538: PUSH
3539: LD_INT 31
3541: PPUSH
3542: LD_INT 8
3544: PPUSH
3545: CALL 836 0 2
3549: AND
3550: PUSH
3551: LD_OWVAR 67
3555: PUSH
3556: LD_INT 2
3558: EQUAL
3559: AND
3560: IFFALSE 3629
3562: GO 3564
3564: DISABLE
// begin objective = 1 ;
3565: LD_ADDR_EXP 1
3569: PUSH
3570: LD_INT 1
3572: ST_TO_ADDR
// ChangeMissionObjectives ( NormalContinue ) ;
3573: LD_STRING NormalContinue
3575: PPUSH
3576: CALL_OW 337
// wait ( rand ( 6 6$00 , 8 8$30 ) ) ;
3580: LD_INT 12600
3582: PPUSH
3583: LD_INT 17850
3585: PPUSH
3586: CALL_OW 12
3590: PPUSH
3591: CALL_OW 67
// Say ( getUnits ( 8 ) [ 1 ] , NormalFinale ) ;
3595: LD_INT 8
3597: PPUSH
3598: CALL 408 0 1
3602: PUSH
3603: LD_INT 1
3605: ARRAY
3606: PPUSH
3607: LD_STRING NormalFinale
3609: PPUSH
3610: CALL_OW 88
// ChangeMissionObjectives ( NormalFinale ) ;
3614: LD_STRING NormalFinale
3616: PPUSH
3617: CALL_OW 337
// objective = 2 ;
3621: LD_ADDR_EXP 1
3625: PUSH
3626: LD_INT 2
3628: ST_TO_ADDR
// end ;
3629: END
// every 0 0$01 trigger objective = 2 and difficulty = 2 do var i ;
3630: LD_EXP 1
3634: PUSH
3635: LD_INT 2
3637: EQUAL
3638: PUSH
3639: LD_OWVAR 67
3643: PUSH
3644: LD_INT 2
3646: EQUAL
3647: AND
3648: IFFALSE 3872
3650: GO 3652
3652: DISABLE
3653: LD_INT 0
3655: PPUSH
// begin NationSide ( 1 , 1 ) ;
3656: LD_INT 1
3658: PPUSH
3659: LD_INT 1
3661: PPUSH
3662: CALL 380 0 2
// for i = 0 to 15 do
3666: LD_ADDR_VAR 0 1
3670: PUSH
3671: DOUBLE
3672: LD_INT 0
3674: DEC
3675: ST_TO_ADDR
3676: LD_INT 15
3678: PUSH
3679: FOR_TO
3680: IFFALSE 3767
// PlaceUnitArea ( createChar (  ,  , class_soldier , 50 , [ rand ( 2 , 4 ) , rand ( 1 , 2 ) , rand ( 1 , 3 ) , rand ( 0 , 2 ) ] ,  ,  ) , soldierEntranceArea , false ) ;
3682: LD_STRING 
3684: PPUSH
3685: LD_STRING 
3687: PPUSH
3688: LD_INT 1
3690: PPUSH
3691: LD_INT 50
3693: PPUSH
3694: LD_INT 2
3696: PPUSH
3697: LD_INT 4
3699: PPUSH
3700: CALL_OW 12
3704: PUSH
3705: LD_INT 1
3707: PPUSH
3708: LD_INT 2
3710: PPUSH
3711: CALL_OW 12
3715: PUSH
3716: LD_INT 1
3718: PPUSH
3719: LD_INT 3
3721: PPUSH
3722: CALL_OW 12
3726: PUSH
3727: LD_INT 0
3729: PPUSH
3730: LD_INT 2
3732: PPUSH
3733: CALL_OW 12
3737: PUSH
3738: EMPTY
3739: LIST
3740: LIST
3741: LIST
3742: LIST
3743: PPUSH
3744: LD_STRING 
3746: PPUSH
3747: LD_STRING 
3749: PPUSH
3750: CALL 198 0 7
3754: PPUSH
3755: LD_INT 14
3757: PPUSH
3758: LD_INT 0
3760: PPUSH
3761: CALL_OW 49
3765: GO 3679
3767: POP
3768: POP
// for i = 0 to 12 do
3769: LD_ADDR_VAR 0 1
3773: PUSH
3774: DOUBLE
3775: LD_INT 0
3777: DEC
3778: ST_TO_ADDR
3779: LD_INT 12
3781: PUSH
3782: FOR_TO
3783: IFFALSE 3870
// PlaceUnitArea ( createChar (  ,  , class_soldier , 50 , [ rand ( 2 , 4 ) , rand ( 1 , 2 ) , rand ( 1 , 3 ) , rand ( 0 , 2 ) ] ,  ,  ) , vehicleEntranceArea , false ) ;
3785: LD_STRING 
3787: PPUSH
3788: LD_STRING 
3790: PPUSH
3791: LD_INT 1
3793: PPUSH
3794: LD_INT 50
3796: PPUSH
3797: LD_INT 2
3799: PPUSH
3800: LD_INT 4
3802: PPUSH
3803: CALL_OW 12
3807: PUSH
3808: LD_INT 1
3810: PPUSH
3811: LD_INT 2
3813: PPUSH
3814: CALL_OW 12
3818: PUSH
3819: LD_INT 1
3821: PPUSH
3822: LD_INT 3
3824: PPUSH
3825: CALL_OW 12
3829: PUSH
3830: LD_INT 0
3832: PPUSH
3833: LD_INT 2
3835: PPUSH
3836: CALL_OW 12
3840: PUSH
3841: EMPTY
3842: LIST
3843: LIST
3844: LIST
3845: LIST
3846: PPUSH
3847: LD_STRING 
3849: PPUSH
3850: LD_STRING 
3852: PPUSH
3853: CALL 198 0 7
3857: PPUSH
3858: LD_INT 12
3860: PPUSH
3861: LD_INT 0
3863: PPUSH
3864: CALL_OW 49
3868: GO 3782
3870: POP
3871: POP
// end ;
3872: PPOPN 1
3874: END
// every 0 0$30 trigger objective = 1 and difficulty = 2 do var i , units , vehicle ;
3875: LD_EXP 1
3879: PUSH
3880: LD_INT 1
3882: EQUAL
3883: PUSH
3884: LD_OWVAR 67
3888: PUSH
3889: LD_INT 2
3891: EQUAL
3892: AND
3893: IFFALSE 4063
3895: GO 3897
3897: DISABLE
3898: LD_INT 0
3900: PPUSH
3901: PPUSH
3902: PPUSH
// begin wait ( rand ( 0 0$30 , 1 1$30 ) ) ;
3903: LD_INT 1050
3905: PPUSH
3906: LD_INT 3150
3908: PPUSH
3909: CALL_OW 12
3913: PPUSH
3914: CALL_OW 67
// for i in getClassUnits ( class_soldier , 3 ) do
3918: LD_ADDR_VAR 0 1
3922: PUSH
3923: LD_INT 1
3925: PPUSH
3926: LD_INT 3
3928: PPUSH
3929: CALL 576 0 2
3933: PUSH
3934: FOR_IN
3935: IFFALSE 3965
// if units < 5 then
3937: LD_VAR 0 2
3941: PUSH
3942: LD_INT 5
3944: LESS
3945: IFFALSE 3963
// units = units ^ i ;
3947: LD_ADDR_VAR 0 2
3951: PUSH
3952: LD_VAR 0 2
3956: PUSH
3957: LD_VAR 0 1
3961: ADD
3962: ST_TO_ADDR
3963: GO 3934
3965: POP
3966: POP
// vehicle = getWeaponVehicles ( ar_control_tower , 8 ) ;
3967: LD_ADDR_VAR 0 3
3971: PUSH
3972: LD_INT 31
3974: PPUSH
3975: LD_INT 8
3977: PPUSH
3978: CALL 836 0 2
3982: ST_TO_ADDR
// if vehicle then
3983: LD_VAR 0 3
3987: IFFALSE 4062
// if not UnitsInside ( vehicle [ 1 ] ) then
3989: LD_VAR 0 3
3993: PUSH
3994: LD_INT 1
3996: ARRAY
3997: PPUSH
3998: CALL_OW 313
4002: NOT
4003: IFFALSE 4025
// comEnterUnit ( units , vehicle [ 1 ] ) else
4005: LD_VAR 0 2
4009: PPUSH
4010: LD_VAR 0 3
4014: PUSH
4015: LD_INT 1
4017: ARRAY
4018: PPUSH
4019: CALL_OW 120
4023: GO 4062
// comAgressiveMove ( units , getX ( vehicle [ 1 ] ) , getY ( vehicle [ 1 ] ) ) ;
4025: LD_VAR 0 2
4029: PPUSH
4030: LD_VAR 0 3
4034: PUSH
4035: LD_INT 1
4037: ARRAY
4038: PPUSH
4039: CALL_OW 250
4043: PPUSH
4044: LD_VAR 0 3
4048: PUSH
4049: LD_INT 1
4051: ARRAY
4052: PPUSH
4053: CALL_OW 251
4057: PPUSH
4058: CALL_OW 114
// enable ;
4062: ENABLE
// end ;
4063: PPOPN 3
4065: END
// every 0 0$02.5 trigger getUnits ( 1 ) do var units , areaList , areas , i , rng ;
4066: LD_INT 1
4068: PPUSH
4069: CALL 408 0 1
4073: IFFALSE 4251
4075: GO 4077
4077: DISABLE
4078: LD_INT 0
4080: PPUSH
4081: PPUSH
4082: PPUSH
4083: PPUSH
4084: PPUSH
// begin areas = [ soldierBreastworkArea , hardSplitArea , mechanicArea , commanderArea , hostageArea , easySplitArea , normalSplitArea , scientistArea ] ;
4085: LD_ADDR_VAR 0 3
4089: PUSH
4090: LD_INT 9
4092: PUSH
4093: LD_INT 8
4095: PUSH
4096: LD_INT 20
4098: PUSH
4099: LD_INT 7
4101: PUSH
4102: LD_INT 5
4104: PUSH
4105: LD_INT 11
4107: PUSH
4108: LD_INT 4
4110: PUSH
4111: LD_INT 18
4113: PUSH
4114: EMPTY
4115: LIST
4116: LIST
4117: LIST
4118: LIST
4119: LIST
4120: LIST
4121: LIST
4122: LIST
4123: ST_TO_ADDR
// units = getClassUnits ( class_soldier , 1 ) ;
4124: LD_ADDR_VAR 0 1
4128: PUSH
4129: LD_INT 1
4131: PPUSH
4132: LD_INT 1
4134: PPUSH
4135: CALL 576 0 2
4139: ST_TO_ADDR
// areaList = areaToList ( areas [ rand ( 1 , areas ) ] , 0 ) ;
4140: LD_ADDR_VAR 0 2
4144: PUSH
4145: LD_VAR 0 3
4149: PUSH
4150: LD_INT 1
4152: PPUSH
4153: LD_VAR 0 3
4157: PPUSH
4158: CALL_OW 12
4162: ARRAY
4163: PPUSH
4164: LD_INT 0
4166: PPUSH
4167: CALL_OW 517
4171: ST_TO_ADDR
// for i in units do
4172: LD_ADDR_VAR 0 4
4176: PUSH
4177: LD_VAR 0 1
4181: PUSH
4182: FOR_IN
4183: IFFALSE 4248
// begin rng = rand ( 1 , areaList [ 1 ] ) ;
4185: LD_ADDR_VAR 0 5
4189: PUSH
4190: LD_INT 1
4192: PPUSH
4193: LD_VAR 0 2
4197: PUSH
4198: LD_INT 1
4200: ARRAY
4201: PPUSH
4202: CALL_OW 12
4206: ST_TO_ADDR
// AddComAgressiveMove ( i , areaList [ 1 ] [ rng ] , areaList [ 2 ] [ rng ] ) ;
4207: LD_VAR 0 4
4211: PPUSH
4212: LD_VAR 0 2
4216: PUSH
4217: LD_INT 1
4219: ARRAY
4220: PUSH
4221: LD_VAR 0 5
4225: ARRAY
4226: PPUSH
4227: LD_VAR 0 2
4231: PUSH
4232: LD_INT 2
4234: ARRAY
4235: PUSH
4236: LD_VAR 0 5
4240: ARRAY
4241: PPUSH
4242: CALL_OW 174
// end ;
4246: GO 4182
4248: POP
4249: POP
// enable ;
4250: ENABLE
// end ;
4251: PPOPN 5
4253: END
// every 0 0$01 trigger not getWeaponVehicles ( ar_control_tower , 7 ) and not getWeaponVehicles ( ar_control_tower , 8 ) and difficulty = 2 and objective < 2 do
4254: LD_INT 31
4256: PPUSH
4257: LD_INT 7
4259: PPUSH
4260: CALL 836 0 2
4264: NOT
4265: PUSH
4266: LD_INT 31
4268: PPUSH
4269: LD_INT 8
4271: PPUSH
4272: CALL 836 0 2
4276: NOT
4277: AND
4278: PUSH
4279: LD_OWVAR 67
4283: PUSH
4284: LD_INT 2
4286: EQUAL
4287: AND
4288: PUSH
4289: LD_EXP 1
4293: PUSH
4294: LD_INT 2
4296: LESS
4297: AND
4298: IFFALSE 4310
4300: GO 4302
4302: DISABLE
// YouLost ( objective ) ;
4303: LD_STRING objective
4305: PPUSH
4306: CALL_OW 104
4310: END
// every 0 0$01 trigger difficulty = 3 do var vehicle , areaList , rng ;
4311: LD_OWVAR 67
4315: PUSH
4316: LD_INT 3
4318: EQUAL
4319: IFFALSE 4557
4321: GO 4323
4323: DISABLE
4324: LD_INT 0
4326: PPUSH
4327: PPUSH
4328: PPUSH
// begin wait ( rand ( 3 3$29 , 6 6$29 ) ) ;
4329: LD_INT 7315
4331: PPUSH
4332: LD_INT 13615
4334: PPUSH
4335: CALL_OW 12
4339: PPUSH
4340: CALL_OW 67
// NationSide ( 3 , 7 ) ;
4344: LD_INT 3
4346: PPUSH
4347: LD_INT 7
4349: PPUSH
4350: CALL 380 0 2
// vehicle = createVeh ( ru_heavy_wheeled , control_manual , engine_combustion , ru_heavy_machine_gun , 50 ) ;
4354: LD_ADDR_VAR 0 1
4358: PUSH
4359: LD_INT 23
4361: PPUSH
4362: LD_INT 1
4364: PPUSH
4365: LD_INT 1
4367: PPUSH
4368: LD_INT 42
4370: PPUSH
4371: LD_INT 50
4373: PPUSH
4374: CALL 312 0 5
4378: ST_TO_ADDR
// ; PlaceHumanInUnit ( createChar (  ,  , class_soldier , 0 , [ 3 , rand ( 0 , 1 ) , rand ( 1 , 2 ) , rand ( 0 , 1 ) ] ,  ,  ) , vehicle ) ;
4379: LD_STRING 
4381: PPUSH
4382: LD_STRING 
4384: PPUSH
4385: LD_INT 1
4387: PPUSH
4388: LD_INT 0
4390: PPUSH
4391: LD_INT 3
4393: PUSH
4394: LD_INT 0
4396: PPUSH
4397: LD_INT 1
4399: PPUSH
4400: CALL_OW 12
4404: PUSH
4405: LD_INT 1
4407: PPUSH
4408: LD_INT 2
4410: PPUSH
4411: CALL_OW 12
4415: PUSH
4416: LD_INT 0
4418: PPUSH
4419: LD_INT 1
4421: PPUSH
4422: CALL_OW 12
4426: PUSH
4427: EMPTY
4428: LIST
4429: LIST
4430: LIST
4431: LIST
4432: PPUSH
4433: LD_STRING 
4435: PPUSH
4436: LD_STRING 
4438: PPUSH
4439: CALL 198 0 7
4443: PPUSH
4444: LD_VAR 0 1
4448: PPUSH
4449: CALL_OW 52
// PlaceUnitArea ( vehicle , vehicleEntranceArea , false ) ;
4453: LD_VAR 0 1
4457: PPUSH
4458: LD_INT 12
4460: PPUSH
4461: LD_INT 0
4463: PPUSH
4464: CALL_OW 49
// areaList = areaToList ( vehicleStopArea , 0 ) ;
4468: LD_ADDR_VAR 0 2
4472: PUSH
4473: LD_INT 13
4475: PPUSH
4476: LD_INT 0
4478: PPUSH
4479: CALL_OW 517
4483: ST_TO_ADDR
// rng = rand ( 1 , areaList [ 1 ] ) ;
4484: LD_ADDR_VAR 0 3
4488: PUSH
4489: LD_INT 1
4491: PPUSH
4492: LD_VAR 0 2
4496: PUSH
4497: LD_INT 1
4499: ARRAY
4500: PPUSH
4501: CALL_OW 12
4505: ST_TO_ADDR
// comMoveXY ( vehicle , areaList [ 1 ] [ rng ] , areaList [ 2 ] [ rng ] ) ;
4506: LD_VAR 0 1
4510: PPUSH
4511: LD_VAR 0 2
4515: PUSH
4516: LD_INT 1
4518: ARRAY
4519: PUSH
4520: LD_VAR 0 3
4524: ARRAY
4525: PPUSH
4526: LD_VAR 0 2
4530: PUSH
4531: LD_INT 2
4533: ARRAY
4534: PUSH
4535: LD_VAR 0 3
4539: ARRAY
4540: PPUSH
4541: CALL_OW 111
// vehicleArrived = 1 ;
4545: LD_ADDR_EXP 5
4549: PUSH
4550: LD_INT 1
4552: ST_TO_ADDR
// SaveForQuickRestart ;
4553: CALL_OW 22
// end ;
4557: PPOPN 3
4559: END
// every 0 0$01 trigger getWeaponVehicles ( ru_heavy_machine_gun , 8 ) do
4560: LD_INT 42
4562: PPUSH
4563: LD_INT 8
4565: PPUSH
4566: CALL 836 0 2
4570: IFFALSE 4609
4572: GO 4574
4574: DISABLE
// begin say ( getUnits ( 8 ) [ 1 ] , HardContinue ) ;
4575: LD_INT 8
4577: PPUSH
4578: CALL 408 0 1
4582: PUSH
4583: LD_INT 1
4585: ARRAY
4586: PPUSH
4587: LD_STRING HardContinue
4589: PPUSH
4590: CALL_OW 88
// objective = 2 ;
4594: LD_ADDR_EXP 1
4598: PUSH
4599: LD_INT 2
4601: ST_TO_ADDR
// ChangeMissionObjectives ( HardContinue ) ;
4602: LD_STRING HardContinue
4604: PPUSH
4605: CALL_OW 337
// end ;
4609: END
// every 0 0$01 do var i , vehicle , units ;
4610: GO 4612
4612: DISABLE
4613: LD_INT 0
4615: PPUSH
4616: PPUSH
4617: PPUSH
// begin vehicle = getWeaponVehicles ( ru_heavy_machine_gun , 8 ) ;
4618: LD_ADDR_VAR 0 2
4622: PUSH
4623: LD_INT 42
4625: PPUSH
4626: LD_INT 8
4628: PPUSH
4629: CALL 836 0 2
4633: ST_TO_ADDR
// for i in getClassUnits ( class_soldier , 3 ) do
4634: LD_ADDR_VAR 0 1
4638: PUSH
4639: LD_INT 1
4641: PPUSH
4642: LD_INT 3
4644: PPUSH
4645: CALL 576 0 2
4649: PUSH
4650: FOR_IN
4651: IFFALSE 4681
// if units < 3 then
4653: LD_VAR 0 3
4657: PUSH
4658: LD_INT 3
4660: LESS
4661: IFFALSE 4679
// units = units ^ i ;
4663: LD_ADDR_VAR 0 3
4667: PUSH
4668: LD_VAR 0 3
4672: PUSH
4673: LD_VAR 0 1
4677: ADD
4678: ST_TO_ADDR
4679: GO 4650
4681: POP
4682: POP
// if vehicle then
4683: LD_VAR 0 2
4687: IFFALSE 4762
// if not UnitsInside ( vehicle [ 1 ] ) then
4689: LD_VAR 0 2
4693: PUSH
4694: LD_INT 1
4696: ARRAY
4697: PPUSH
4698: CALL_OW 313
4702: NOT
4703: IFFALSE 4725
// comEnterUnit ( units , vehicle [ 1 ] ) else
4705: LD_VAR 0 3
4709: PPUSH
4710: LD_VAR 0 2
4714: PUSH
4715: LD_INT 1
4717: ARRAY
4718: PPUSH
4719: CALL_OW 120
4723: GO 4762
// comAgressiveMove ( units , getX ( vehicle [ 1 ] ) , getY ( vehicle [ 1 ] ) ) ;
4725: LD_VAR 0 3
4729: PPUSH
4730: LD_VAR 0 2
4734: PUSH
4735: LD_INT 1
4737: ARRAY
4738: PPUSH
4739: CALL_OW 250
4743: PPUSH
4744: LD_VAR 0 2
4748: PUSH
4749: LD_INT 1
4751: ARRAY
4752: PPUSH
4753: CALL_OW 251
4757: PPUSH
4758: CALL_OW 114
// enable ;
4762: ENABLE
// end ;
4763: PPOPN 3
4765: END
// every 0 0$01 trigger vehicleArrived do
4766: LD_EXP 5
4770: IFFALSE 4823
4772: GO 4774
4774: DISABLE
// begin if not getWeaponVehicles ( ru_heavy_machine_gun , 7 ) and not getWeaponVehicles ( ru_heavy_machine_gun , 8 ) or getWeaponVehicles ( ru_heavy_machine_gun , 3 ) then
4775: LD_INT 42
4777: PPUSH
4778: LD_INT 7
4780: PPUSH
4781: CALL 836 0 2
4785: NOT
4786: PUSH
4787: LD_INT 42
4789: PPUSH
4790: LD_INT 8
4792: PPUSH
4793: CALL 836 0 2
4797: NOT
4798: AND
4799: PUSH
4800: LD_INT 42
4802: PPUSH
4803: LD_INT 3
4805: PPUSH
4806: CALL 836 0 2
4810: OR
4811: IFFALSE 4822
// begin YouLost ( objective ) ;
4813: LD_STRING objective
4815: PPUSH
4816: CALL_OW 104
// exit ;
4820: GO 4823
// end ; enable ;
4822: ENABLE
// end ;
4823: END
// every 0 0$01 do var i , counter , dif , vehicles ;
4824: GO 4826
4826: DISABLE
4827: LD_INT 0
4829: PPUSH
4830: PPUSH
4831: PPUSH
4832: PPUSH
// begin counter = 0 ;
4833: LD_ADDR_VAR 0 2
4837: PUSH
4838: LD_INT 0
4840: ST_TO_ADDR
// dif = [ escapeHostageArea , escapeArea , escapeArea ] [ difficulty ] ;
4841: LD_ADDR_VAR 0 3
4845: PUSH
4846: LD_INT 10
4848: PUSH
4849: LD_INT 19
4851: PUSH
4852: LD_INT 19
4854: PUSH
4855: EMPTY
4856: LIST
4857: LIST
4858: LIST
4859: PUSH
4860: LD_OWVAR 67
4864: ARRAY
4865: ST_TO_ADDR
// if objective = 2 then
4866: LD_EXP 1
4870: PUSH
4871: LD_INT 2
4873: EQUAL
4874: IFFALSE 4988
// begin SetAreaMapShow ( dif , 1 ) ;
4876: LD_VAR 0 3
4880: PPUSH
4881: LD_INT 1
4883: PPUSH
4884: CALL_OW 424
// for i in getUnits ( 8 ) do
4888: LD_ADDR_VAR 0 1
4892: PUSH
4893: LD_INT 8
4895: PPUSH
4896: CALL 408 0 1
4900: PUSH
4901: FOR_IN
4902: IFFALSE 4936
// if isInArea ( i , dif ) then
4904: LD_VAR 0 1
4908: PPUSH
4909: LD_VAR 0 3
4913: PPUSH
4914: CALL_OW 308
4918: IFFALSE 4934
// counter := counter + 1 ;
4920: LD_ADDR_VAR 0 2
4924: PUSH
4925: LD_VAR 0 2
4929: PUSH
4930: LD_INT 1
4932: PLUS
4933: ST_TO_ADDR
4934: GO 4901
4936: POP
4937: POP
// for i in getUnits ( 7 ) do
4938: LD_ADDR_VAR 0 1
4942: PUSH
4943: LD_INT 7
4945: PPUSH
4946: CALL 408 0 1
4950: PUSH
4951: FOR_IN
4952: IFFALSE 4986
// if isInArea ( i , dif ) then
4954: LD_VAR 0 1
4958: PPUSH
4959: LD_VAR 0 3
4963: PPUSH
4964: CALL_OW 308
4968: IFFALSE 4984
// counter := counter + 1 ;
4970: LD_ADDR_VAR 0 2
4974: PUSH
4975: LD_VAR 0 2
4979: PUSH
4980: LD_INT 1
4982: PLUS
4983: ST_TO_ADDR
4984: GO 4951
4986: POP
4987: POP
// end ; if counter = getUnits ( 8 ) ^ getUnits ( 7 ) and mercenaries > 0 and objective = 2 then
4988: LD_VAR 0 2
4992: PUSH
4993: LD_INT 8
4995: PPUSH
4996: CALL 408 0 1
5000: PUSH
5001: LD_INT 7
5003: PPUSH
5004: CALL 408 0 1
5008: ADD
5009: EQUAL
5010: PUSH
5011: LD_EXP 4
5015: PUSH
5016: LD_INT 0
5018: GREATER
5019: AND
5020: PUSH
5021: LD_EXP 1
5025: PUSH
5026: LD_INT 2
5028: EQUAL
5029: AND
5030: IFFALSE 5296
// begin endGame = 1 ;
5032: LD_ADDR_EXP 8
5036: PUSH
5037: LD_INT 1
5039: ST_TO_ADDR
// RewardPeople ( mercenaries ^ getUnits ( 8 ) ) ;
5040: LD_EXP 4
5044: PUSH
5045: LD_INT 8
5047: PPUSH
5048: CALL 408 0 1
5052: ADD
5053: PPUSH
5054: CALL_OW 43
// SaveCharacters ( mercenaries ^ getUnits ( 8 ) , mercenaries ) ;
5058: LD_EXP 4
5062: PUSH
5063: LD_INT 8
5065: PPUSH
5066: CALL 408 0 1
5070: ADD
5071: PPUSH
5072: LD_STRING mercenaries
5074: PPUSH
5075: CALL_OW 38
// vehicles = getVehicles ( 8 ) ;
5079: LD_ADDR_VAR 0 4
5083: PUSH
5084: LD_INT 8
5086: PPUSH
5087: CALL 735 0 1
5091: ST_TO_ADDR
// for i in vehicles do
5092: LD_ADDR_VAR 0 1
5096: PUSH
5097: LD_VAR 0 4
5101: PUSH
5102: FOR_IN
5103: IFFALSE 5138
// if getFuel ( i ) < 1 then
5105: LD_VAR 0 1
5109: PPUSH
5110: CALL_OW 261
5114: PUSH
5115: LD_INT 1
5117: LESS
5118: IFFALSE 5136
// vehicles = vehicles diff i ;
5120: LD_ADDR_VAR 0 4
5124: PUSH
5125: LD_VAR 0 4
5129: PUSH
5130: LD_VAR 0 1
5134: DIFF
5135: ST_TO_ADDR
5136: GO 5102
5138: POP
5139: POP
// SaveVehicles ( vehicles , vehicles ) ;
5140: LD_VAR 0 4
5144: PPUSH
5145: LD_STRING vehicles
5147: PPUSH
5148: CALL 1129 0 2
// addmedal ( med1 , stealth ) ;
5152: LD_STRING med1
5154: PPUSH
5155: LD_EXP 3
5159: PPUSH
5160: CALL_OW 101
// counter = 1 ;
5164: LD_ADDR_VAR 0 2
5168: PUSH
5169: LD_INT 1
5171: ST_TO_ADDR
// for i in commanders do
5172: LD_ADDR_VAR 0 1
5176: PUSH
5177: LD_EXP 2
5181: PUSH
5182: FOR_IN
5183: IFFALSE 5207
// if isLive ( i ) then
5185: LD_VAR 0 1
5189: PPUSH
5190: CALL_OW 300
5194: IFFALSE 5205
// counter = - 1 ;
5196: LD_ADDR_VAR 0 2
5200: PUSH
5201: LD_INT 1
5203: NEG
5204: ST_TO_ADDR
5205: GO 5182
5207: POP
5208: POP
// addmedal ( med2 , counter ) ;
5209: LD_STRING med2
5211: PPUSH
5212: LD_VAR 0 2
5216: PPUSH
5217: CALL_OW 101
// if not getBuildings ( b_oil_mine , 3 ) or not getBuildings ( b_oil_power , 3 ) or not getBuildings ( b_factory , 3 ) then
5221: LD_INT 29
5223: PPUSH
5224: LD_INT 3
5226: PPUSH
5227: CALL 636 0 2
5231: NOT
5232: PUSH
5233: LD_INT 26
5235: PPUSH
5236: LD_INT 3
5238: PPUSH
5239: CALL 636 0 2
5243: NOT
5244: OR
5245: PUSH
5246: LD_INT 3
5248: PPUSH
5249: LD_INT 3
5251: PPUSH
5252: CALL 636 0 2
5256: NOT
5257: OR
5258: IFFALSE 5272
// addmedal ( med3 , 1 ) else
5260: LD_STRING med3
5262: PPUSH
5263: LD_INT 1
5265: PPUSH
5266: CALL_OW 101
5270: GO 5283
// addmedal ( med3 , - 1 ) ;
5272: LD_STRING med3
5274: PPUSH
5275: LD_INT 1
5277: NEG
5278: PPUSH
5279: CALL_OW 101
// GiveMedals ( MAIN ) ;
5283: LD_STRING MAIN
5285: PPUSH
5286: CALL_OW 102
// YouWin ;
5290: CALL_OW 103
// exit ;
5294: GO 5297
// end ; enable ;
5296: ENABLE
// end ;
5297: PPOPN 4
5299: END
// on Contact ( s1 , s2 ) do begin if s1 = 8 and s2 = 3 then
5300: LD_VAR 0 1
5304: PUSH
5305: LD_INT 8
5307: EQUAL
5308: PUSH
5309: LD_VAR 0 2
5313: PUSH
5314: LD_INT 3
5316: EQUAL
5317: AND
5318: IFFALSE 5339
// if objective < 1 then
5320: LD_EXP 1
5324: PUSH
5325: LD_INT 1
5327: LESS
5328: IFFALSE 5339
// stealth = - 1 ;
5330: LD_ADDR_EXP 3
5334: PUSH
5335: LD_INT 1
5337: NEG
5338: ST_TO_ADDR
// end ;
5339: PPOPN 2
5341: END
// every 0 0$01 trigger objective > 0 and stealth = 1 do
5342: LD_EXP 1
5346: PUSH
5347: LD_INT 0
5349: GREATER
5350: PUSH
5351: LD_EXP 3
5355: PUSH
5356: LD_INT 1
5358: EQUAL
5359: AND
5360: IFFALSE 5372
5362: GO 5364
5364: DISABLE
// ChangeMissionObjectives ( stealthOut ) ;
5365: LD_STRING stealthOut
5367: PPUSH
5368: CALL_OW 337
5372: END
// every 0 0$01 do var i , counter ;
5373: GO 5375
5375: DISABLE
5376: LD_INT 0
5378: PPUSH
5379: PPUSH
// begin counter = 0 ;
5380: LD_ADDR_VAR 0 2
5384: PUSH
5385: LD_INT 0
5387: ST_TO_ADDR
// for i in commanders do
5388: LD_ADDR_VAR 0 1
5392: PUSH
5393: LD_EXP 2
5397: PUSH
5398: FOR_IN
5399: IFFALSE 5428
// if isLive ( i ) then
5401: LD_VAR 0 1
5405: PPUSH
5406: CALL_OW 300
5410: IFFALSE 5426
// counter = counter + 1 ;
5412: LD_ADDR_VAR 0 2
5416: PUSH
5417: LD_VAR 0 2
5421: PUSH
5422: LD_INT 1
5424: PLUS
5425: ST_TO_ADDR
5426: GO 5398
5428: POP
5429: POP
// if counter = 0 then
5430: LD_VAR 0 2
5434: PUSH
5435: LD_INT 0
5437: EQUAL
5438: IFFALSE 5449
// begin ChangeMissionObjectives ( commanderOut ) ;
5440: LD_STRING commanderOut
5442: PPUSH
5443: CALL_OW 337
// exit ;
5447: GO 5450
// end ; enable ;
5449: ENABLE
// end ;
5450: PPOPN 2
5452: END
// every 0 0$01 trigger not getBuildings ( b_oil_mine , 3 ) or not getBuildings ( b_oil_power , 3 ) or not getBuildings ( b_factory , 3 ) do
5453: LD_INT 29
5455: PPUSH
5456: LD_INT 3
5458: PPUSH
5459: CALL 636 0 2
5463: NOT
5464: PUSH
5465: LD_INT 26
5467: PPUSH
5468: LD_INT 3
5470: PPUSH
5471: CALL 636 0 2
5475: NOT
5476: OR
5477: PUSH
5478: LD_INT 3
5480: PPUSH
5481: LD_INT 3
5483: PPUSH
5484: CALL 636 0 2
5488: NOT
5489: OR
5490: IFFALSE 5502
5492: GO 5494
5494: DISABLE
// ChangeMissionObjectives ( sabotageOut ) ;
5495: LD_STRING sabotageOut
5497: PPUSH
5498: CALL_OW 337
5502: END
// every 3 3$15 do var i , j , buildings , separateBuildings ;
5503: GO 5505
5505: DISABLE
5506: LD_INT 0
5508: PPUSH
5509: PPUSH
5510: PPUSH
5511: PPUSH
// begin wait ( rand ( 0 0$15 , 1 1$00 ) ) ;
5512: LD_INT 525
5514: PPUSH
5515: LD_INT 2100
5517: PPUSH
5518: CALL_OW 12
5522: PPUSH
5523: CALL_OW 67
// buildings = getBuildings ( b_armoury , 3 ) ;
5527: LD_ADDR_VAR 0 3
5531: PUSH
5532: LD_INT 4
5534: PPUSH
5535: LD_INT 3
5537: PPUSH
5538: CALL 636 0 2
5542: ST_TO_ADDR
// for i in getBuildings ( b_breastwork , 3 ) do
5543: LD_ADDR_VAR 0 1
5547: PUSH
5548: LD_INT 31
5550: PPUSH
5551: LD_INT 3
5553: PPUSH
5554: CALL 636 0 2
5558: PUSH
5559: FOR_IN
5560: IFFALSE 5666
// if UnitsInside ( i ) then
5562: LD_VAR 0 1
5566: PPUSH
5567: CALL_OW 313
5571: IFFALSE 5664
// begin j = UnitsInside ( i ) ;
5573: LD_ADDR_VAR 0 2
5577: PUSH
5578: LD_VAR 0 1
5582: PPUSH
5583: CALL_OW 313
5587: ST_TO_ADDR
// buildings = buildings [ rand ( 1 , buildings ) ] ;
5588: LD_ADDR_VAR 0 3
5592: PUSH
5593: LD_VAR 0 3
5597: PUSH
5598: LD_INT 1
5600: PPUSH
5601: LD_VAR 0 3
5605: PPUSH
5606: CALL_OW 12
5610: ARRAY
5611: ST_TO_ADDR
// ComExitBuilding ( j ) ;
5612: LD_VAR 0 2
5616: PPUSH
5617: CALL_OW 122
// addComAgressiveMove ( j , getX ( buildings ) , getY ( buildings ) ) ;
5621: LD_VAR 0 2
5625: PPUSH
5626: LD_VAR 0 3
5630: PPUSH
5631: CALL_OW 250
5635: PPUSH
5636: LD_VAR 0 3
5640: PPUSH
5641: CALL_OW 251
5645: PPUSH
5646: CALL_OW 174
// addComEnterUnit ( j , buildings ) ;
5650: LD_VAR 0 2
5654: PPUSH
5655: LD_VAR 0 3
5659: PPUSH
5660: CALL_OW 180
// end ;
5664: GO 5559
5666: POP
5667: POP
// wait ( 0 0$05 ) ;
5668: LD_INT 175
5670: PPUSH
5671: CALL_OW 67
// buildings = getBuildings ( b_armoury , 3 ) ;
5675: LD_ADDR_VAR 0 3
5679: PUSH
5680: LD_INT 4
5682: PPUSH
5683: LD_INT 3
5685: PPUSH
5686: CALL 636 0 2
5690: ST_TO_ADDR
// for i in buildings do
5691: LD_ADDR_VAR 0 1
5695: PUSH
5696: LD_VAR 0 3
5700: PUSH
5701: FOR_IN
5702: IFFALSE 5854
// if getEmptyBuildings ( b_breastwork , 3 ) then
5704: LD_INT 31
5706: PPUSH
5707: LD_INT 3
5709: PPUSH
5710: CALL 682 0 2
5714: IFFALSE 5852
// if UnitsInside ( i ) then
5716: LD_VAR 0 1
5720: PPUSH
5721: CALL_OW 313
5725: IFFALSE 5852
// for j in UnitsInside ( i ) do
5727: LD_ADDR_VAR 0 2
5731: PUSH
5732: LD_VAR 0 1
5736: PPUSH
5737: CALL_OW 313
5741: PUSH
5742: FOR_IN
5743: IFFALSE 5850
// if getClass ( j ) = class_soldier then
5745: LD_VAR 0 2
5749: PPUSH
5750: CALL_OW 257
5754: PUSH
5755: LD_INT 1
5757: EQUAL
5758: IFFALSE 5848
// begin separateBuildings = getEmptyBuildings ( b_breastwork , 3 ) [ rand ( 1 , getEmptyBuildings ( b_breastwork , 3 ) ) ] ;
5760: LD_ADDR_VAR 0 4
5764: PUSH
5765: LD_INT 31
5767: PPUSH
5768: LD_INT 3
5770: PPUSH
5771: CALL 682 0 2
5775: PUSH
5776: LD_INT 1
5778: PPUSH
5779: LD_INT 31
5781: PPUSH
5782: LD_INT 3
5784: PPUSH
5785: CALL 682 0 2
5789: PPUSH
5790: CALL_OW 12
5794: ARRAY
5795: ST_TO_ADDR
// ComExitBuilding ( j ) ;
5796: LD_VAR 0 2
5800: PPUSH
5801: CALL_OW 122
// ComAgressiveMove ( j , getX ( separateBuildings ) , getY ( separateBuildings ) ) ;
5805: LD_VAR 0 2
5809: PPUSH
5810: LD_VAR 0 4
5814: PPUSH
5815: CALL_OW 250
5819: PPUSH
5820: LD_VAR 0 4
5824: PPUSH
5825: CALL_OW 251
5829: PPUSH
5830: CALL_OW 114
// addComEnterUnit ( j , separateBuildings ) ;
5834: LD_VAR 0 2
5838: PPUSH
5839: LD_VAR 0 4
5843: PPUSH
5844: CALL_OW 180
// end ;
5848: GO 5742
5850: POP
5851: POP
5852: GO 5701
5854: POP
5855: POP
// enable ;
5856: ENABLE
// end ;
5857: PPOPN 4
5859: END
// every 3 3$45 do var vehicle , depot ;
5860: GO 5862
5862: DISABLE
5863: LD_INT 0
5865: PPUSH
5866: PPUSH
// begin wait ( rand ( 0 0$30 , 1 1$00 ) ) ;
5867: LD_INT 1050
5869: PPUSH
5870: LD_INT 2100
5872: PPUSH
5873: CALL_OW 12
5877: PPUSH
5878: CALL_OW 67
// NationSide ( 3 , 3 ) ;
5882: LD_INT 3
5884: PPUSH
5885: LD_INT 3
5887: PPUSH
5888: CALL 380 0 2
// vehicle = createVeh ( ru_medium_wheeled , control_manual , engine_combustion , ru_cargo_bay , 35 ) ;
5892: LD_ADDR_VAR 0 1
5896: PUSH
5897: LD_INT 21
5899: PPUSH
5900: LD_INT 1
5902: PPUSH
5903: LD_INT 1
5905: PPUSH
5906: LD_INT 51
5908: PPUSH
5909: LD_INT 35
5911: PPUSH
5912: CALL 312 0 5
5916: ST_TO_ADDR
// SetCargo ( vehicle , mat_cans , 100 ) ;
5917: LD_VAR 0 1
5921: PPUSH
5922: LD_INT 1
5924: PPUSH
5925: LD_INT 100
5927: PPUSH
5928: CALL_OW 290
// PlaceHumanInUnit ( createChar (  ,  , class_soldier , 0 , [ rand ( 2 , 3 ) , rand ( 0 , 2 ) , rand ( 0 , 2 ) , rand ( 0 , 2 ) ] ,  ,  ) , vehicle ) ;
5932: LD_STRING 
5934: PPUSH
5935: LD_STRING 
5937: PPUSH
5938: LD_INT 1
5940: PPUSH
5941: LD_INT 0
5943: PPUSH
5944: LD_INT 2
5946: PPUSH
5947: LD_INT 3
5949: PPUSH
5950: CALL_OW 12
5954: PUSH
5955: LD_INT 0
5957: PPUSH
5958: LD_INT 2
5960: PPUSH
5961: CALL_OW 12
5965: PUSH
5966: LD_INT 0
5968: PPUSH
5969: LD_INT 2
5971: PPUSH
5972: CALL_OW 12
5976: PUSH
5977: LD_INT 0
5979: PPUSH
5980: LD_INT 2
5982: PPUSH
5983: CALL_OW 12
5987: PUSH
5988: EMPTY
5989: LIST
5990: LIST
5991: LIST
5992: LIST
5993: PPUSH
5994: LD_STRING 
5996: PPUSH
5997: LD_STRING 
5999: PPUSH
6000: CALL 198 0 7
6004: PPUSH
6005: LD_VAR 0 1
6009: PPUSH
6010: CALL_OW 52
// PlaceUnitArea ( vehicle , vehicleEntranceArea , false ) ;
6014: LD_VAR 0 1
6018: PPUSH
6019: LD_INT 12
6021: PPUSH
6022: LD_INT 0
6024: PPUSH
6025: CALL_OW 49
// depot = getBuildings ( b_depot , 3 ) ;
6029: LD_ADDR_VAR 0 2
6033: PUSH
6034: LD_INT 0
6036: PPUSH
6037: LD_INT 3
6039: PPUSH
6040: CALL 636 0 2
6044: ST_TO_ADDR
// if depot and getBuildings ( b_factory , 3 ) then
6045: LD_VAR 0 2
6049: PUSH
6050: LD_INT 3
6052: PPUSH
6053: LD_INT 3
6055: PPUSH
6056: CALL 636 0 2
6060: AND
6061: IFFALSE 6137
// begin AddComMoveXY ( vehicle , getX ( depot [ 1 ] ) , getY ( depot [ 1 ] ) ) ;
6063: LD_VAR 0 1
6067: PPUSH
6068: LD_VAR 0 2
6072: PUSH
6073: LD_INT 1
6075: ARRAY
6076: PPUSH
6077: CALL_OW 250
6081: PPUSH
6082: LD_VAR 0 2
6086: PUSH
6087: LD_INT 1
6089: ARRAY
6090: PPUSH
6091: CALL_OW 251
6095: PPUSH
6096: CALL_OW 171
// AddComCollect ( vehicle , getX ( depot [ 1 ] ) , getY ( depot [ 1 ] ) ) ;
6100: LD_VAR 0 1
6104: PPUSH
6105: LD_VAR 0 2
6109: PUSH
6110: LD_INT 1
6112: ARRAY
6113: PPUSH
6114: CALL_OW 250
6118: PPUSH
6119: LD_VAR 0 2
6123: PUSH
6124: LD_INT 1
6126: ARRAY
6127: PPUSH
6128: CALL_OW 251
6132: PPUSH
6133: CALL_OW 177
// end ; AddComMoveToArea ( vehicle , soldierEntranceArea ) ;
6137: LD_VAR 0 1
6141: PPUSH
6142: LD_INT 14
6144: PPUSH
6145: CALL_OW 173
// enable ;
6149: ENABLE
// end ;
6150: PPOPN 2
6152: END
// every 0 0$01 do var vehicles , i ;
6153: GO 6155
6155: DISABLE
6156: LD_INT 0
6158: PPUSH
6159: PPUSH
// begin vehicles = getWeaponVehicles ( ru_cargo_bay , 3 ) ^ getWeaponVehicles ( ru_gatling_gun , 3 ) ;
6160: LD_ADDR_VAR 0 1
6164: PUSH
6165: LD_INT 51
6167: PPUSH
6168: LD_INT 3
6170: PPUSH
6171: CALL 836 0 2
6175: PUSH
6176: LD_INT 43
6178: PPUSH
6179: LD_INT 3
6181: PPUSH
6182: CALL 836 0 2
6186: ADD
6187: ST_TO_ADDR
// if not getBuildings ( b_factory , 3 ) then
6188: LD_INT 3
6190: PPUSH
6191: LD_INT 3
6193: PPUSH
6194: CALL 636 0 2
6198: NOT
6199: IFFALSE 6223
// vehicles = vehicles ^ getClassUnits ( class_mechanic , 3 ) ;
6201: LD_ADDR_VAR 0 1
6205: PUSH
6206: LD_VAR 0 1
6210: PUSH
6211: LD_INT 3
6213: PPUSH
6214: LD_INT 3
6216: PPUSH
6217: CALL 576 0 2
6221: ADD
6222: ST_TO_ADDR
// if vehicles then
6223: LD_VAR 0 1
6227: IFFALSE 6269
// for i in vehicles do
6229: LD_ADDR_VAR 0 2
6233: PUSH
6234: LD_VAR 0 1
6238: PUSH
6239: FOR_IN
6240: IFFALSE 6267
// begin if IsInArea ( i , soldierEntranceArea ) then
6242: LD_VAR 0 2
6246: PPUSH
6247: LD_INT 14
6249: PPUSH
6250: CALL_OW 308
6254: IFFALSE 6265
// DestroyUnit ( i ) ;
6256: LD_VAR 0 2
6260: PPUSH
6261: CALL_OW 65
// end ;
6265: GO 6239
6267: POP
6268: POP
// enable ;
6269: ENABLE
// end ;
6270: PPOPN 2
6272: END
// on DestinationUnreachable ( unit ) do begin if getType ( unit ) = unit_vehicle then
6273: LD_VAR 0 1
6277: PPUSH
6278: CALL_OW 247
6282: PUSH
6283: LD_INT 2
6285: EQUAL
6286: IFFALSE 6297
// destroyUnit ( unit ) ;
6288: LD_VAR 0 1
6292: PPUSH
6293: CALL_OW 65
// end ;
6297: PPOPN 1
6299: END
// every 2 2$00 do var crates , oil ;
6300: GO 6302
6302: DISABLE
6303: LD_INT 0
6305: PPUSH
6306: PPUSH
// begin wait ( rand ( 0 0$15 , 2 2$00 ) ) ;
6307: LD_INT 525
6309: PPUSH
6310: LD_INT 4200
6312: PPUSH
6313: CALL_OW 12
6317: PPUSH
6318: CALL_OW 67
// if getBuildings ( b_factory , 3 ) then
6322: LD_INT 3
6324: PPUSH
6325: LD_INT 3
6327: PPUSH
6328: CALL 636 0 2
6332: IFFALSE 6449
// begin crates = GetResources ( GetBase ( getBuildings ( b_factory , 3 ) [ 1 ] ) ) [ 1 ] ;
6334: LD_ADDR_VAR 0 1
6338: PUSH
6339: LD_INT 3
6341: PPUSH
6342: LD_INT 3
6344: PPUSH
6345: CALL 636 0 2
6349: PUSH
6350: LD_INT 1
6352: ARRAY
6353: PPUSH
6354: CALL_OW 274
6358: PPUSH
6359: CALL_OW 279
6363: PUSH
6364: LD_INT 1
6366: ARRAY
6367: ST_TO_ADDR
// oil = GetResources ( GetBase ( getBuildings ( b_factory , 3 ) [ 1 ] ) ) [ 2 ] ;
6368: LD_ADDR_VAR 0 2
6372: PUSH
6373: LD_INT 3
6375: PPUSH
6376: LD_INT 3
6378: PPUSH
6379: CALL 636 0 2
6383: PUSH
6384: LD_INT 1
6386: ARRAY
6387: PPUSH
6388: CALL_OW 274
6392: PPUSH
6393: CALL_OW 279
6397: PUSH
6398: LD_INT 2
6400: ARRAY
6401: ST_TO_ADDR
// if crates > 75 and oil > 60 then
6402: LD_VAR 0 1
6406: PUSH
6407: LD_INT 75
6409: GREATER
6410: PUSH
6411: LD_VAR 0 2
6415: PUSH
6416: LD_INT 60
6418: GREATER
6419: AND
6420: IFFALSE 6449
// AddComConstruct ( getBuildings ( b_factory , 3 ) , ru_medium_wheeled , engine_combustion , control_manual , ru_gatling_gun ) ;
6422: LD_INT 3
6424: PPUSH
6425: LD_INT 3
6427: PPUSH
6428: CALL 636 0 2
6432: PPUSH
6433: LD_INT 21
6435: PPUSH
6436: LD_INT 1
6438: PPUSH
6439: LD_INT 1
6441: PPUSH
6442: LD_INT 43
6444: PPUSH
6445: CALL_OW 185
// end ; enable ;
6449: ENABLE
// end ;
6450: PPOPN 2
6452: END
// on VehicleConstructed ( vehicle , building ) do var areaList , rng ;
6453: LD_INT 0
6455: PPUSH
6456: PPUSH
// begin areaList = areaToList ( soldierEntranceArea , 0 ) ;
6457: LD_ADDR_VAR 0 3
6461: PUSH
6462: LD_INT 14
6464: PPUSH
6465: LD_INT 0
6467: PPUSH
6468: CALL_OW 517
6472: ST_TO_ADDR
// rng = rand ( 1 , areaList [ 1 ] ) ;
6473: LD_ADDR_VAR 0 4
6477: PUSH
6478: LD_INT 1
6480: PPUSH
6481: LD_VAR 0 3
6485: PUSH
6486: LD_INT 1
6488: ARRAY
6489: PPUSH
6490: CALL_OW 12
6494: ST_TO_ADDR
// AddComAgressiveMove ( vehicle , areaList [ 1 ] [ rng ] , areaList [ 2 ] [ rng ] ) ;
6495: LD_VAR 0 1
6499: PPUSH
6500: LD_VAR 0 3
6504: PUSH
6505: LD_INT 1
6507: ARRAY
6508: PUSH
6509: LD_VAR 0 4
6513: ARRAY
6514: PPUSH
6515: LD_VAR 0 3
6519: PUSH
6520: LD_INT 2
6522: ARRAY
6523: PUSH
6524: LD_VAR 0 4
6528: ARRAY
6529: PPUSH
6530: CALL_OW 174
// end ;
6534: PPOPN 4
6536: END
// every 1 1$30 do var i ;
6537: GO 6539
6539: DISABLE
6540: LD_INT 0
6542: PPUSH
// begin if not getBuildings ( b_factory , 3 ) then
6543: LD_INT 3
6545: PPUSH
6546: LD_INT 3
6548: PPUSH
6549: CALL 636 0 2
6553: NOT
6554: IFFALSE 6576
// begin AddComMoveToArea ( getClassUnits ( class_mechanic , 3 ) , soldierEntranceArea ) ;
6556: LD_INT 3
6558: PPUSH
6559: LD_INT 3
6561: PPUSH
6562: CALL 576 0 2
6566: PPUSH
6567: LD_INT 14
6569: PPUSH
6570: CALL_OW 173
// exit ;
6574: GO 6768
// end ; wait ( rand ( 0 0$15 , 1 1$30 ) ) ;
6576: LD_INT 525
6578: PPUSH
6579: LD_INT 3150
6581: PPUSH
6582: CALL_OW 12
6586: PPUSH
6587: CALL_OW 67
// NationSide ( 3 , 3 ) ;
6591: LD_INT 3
6593: PPUSH
6594: LD_INT 3
6596: PPUSH
6597: CALL 380 0 2
// if getClassUnits ( class_mechanic , 3 ) < 3 then
6601: LD_INT 3
6603: PPUSH
6604: LD_INT 3
6606: PPUSH
6607: CALL 576 0 2
6611: PUSH
6612: LD_INT 3
6614: LESS
6615: IFFALSE 6720
// for i = 0 to 2 do
6617: LD_ADDR_VAR 0 1
6621: PUSH
6622: DOUBLE
6623: LD_INT 0
6625: DEC
6626: ST_TO_ADDR
6627: LD_INT 2
6629: PUSH
6630: FOR_TO
6631: IFFALSE 6718
// PlaceUnitArea ( createChar (  ,  , class_mechanic , 0 , [ rand ( 0 , 1 ) , rand ( 0 , 2 ) , rand ( 2 , 4 ) , rand ( 1 , 2 ) ] ,  ,  ) , soldierEntranceArea , false ) ;
6633: LD_STRING 
6635: PPUSH
6636: LD_STRING 
6638: PPUSH
6639: LD_INT 3
6641: PPUSH
6642: LD_INT 0
6644: PPUSH
6645: LD_INT 0
6647: PPUSH
6648: LD_INT 1
6650: PPUSH
6651: CALL_OW 12
6655: PUSH
6656: LD_INT 0
6658: PPUSH
6659: LD_INT 2
6661: PPUSH
6662: CALL_OW 12
6666: PUSH
6667: LD_INT 2
6669: PPUSH
6670: LD_INT 4
6672: PPUSH
6673: CALL_OW 12
6677: PUSH
6678: LD_INT 1
6680: PPUSH
6681: LD_INT 2
6683: PPUSH
6684: CALL_OW 12
6688: PUSH
6689: EMPTY
6690: LIST
6691: LIST
6692: LIST
6693: LIST
6694: PPUSH
6695: LD_STRING 
6697: PPUSH
6698: LD_STRING 
6700: PPUSH
6701: CALL 198 0 7
6705: PPUSH
6706: LD_INT 14
6708: PPUSH
6709: LD_INT 0
6711: PPUSH
6712: CALL_OW 49
6716: GO 6630
6718: POP
6719: POP
// for i in getClassUnitsOutside ( class_mechanic , 3 ) do
6720: LD_ADDR_VAR 0 1
6724: PUSH
6725: LD_INT 3
6727: PPUSH
6728: LD_INT 3
6730: PPUSH
6731: CALL 509 0 2
6735: PUSH
6736: FOR_IN
6737: IFFALSE 6765
// comEnterUnit ( i , getBuildings ( b_factory , 3 ) [ 1 ] ) ;
6739: LD_VAR 0 1
6743: PPUSH
6744: LD_INT 3
6746: PPUSH
6747: LD_INT 3
6749: PPUSH
6750: CALL 636 0 2
6754: PUSH
6755: LD_INT 1
6757: ARRAY
6758: PPUSH
6759: CALL_OW 120
6763: GO 6736
6765: POP
6766: POP
// enable ;
6767: ENABLE
// end ;
6768: PPOPN 1
6770: END
// every 0 0$01 do
6771: GO 6773
6773: DISABLE
// begin if getVehiclesArea ( 8 , noVehiclesArea ) or getVehiclesArea ( 8 , warningArea ) and getUnitsArea ( 3 , isSoldierBreastworkArea ) and not warning then
6774: LD_INT 8
6776: PPUSH
6777: LD_INT 16
6779: PPUSH
6780: CALL 779 0 2
6784: PUSH
6785: LD_INT 8
6787: PPUSH
6788: LD_INT 22
6790: PPUSH
6791: CALL 779 0 2
6795: PUSH
6796: LD_INT 3
6798: PPUSH
6799: LD_INT 17
6801: PPUSH
6802: CALL 452 0 2
6806: AND
6807: PUSH
6808: LD_EXP 7
6812: NOT
6813: AND
6814: OR
6815: IFFALSE 6879
// begin ComStop ( getUnitsArea ( 8 , noVehiclesArea ) ) ;
6817: LD_INT 8
6819: PPUSH
6820: LD_INT 16
6822: PPUSH
6823: CALL 452 0 2
6827: PPUSH
6828: CALL_OW 141
// say ( getUnitsArea ( 3 , isSoldierBreastworkArea ) [ 1 ] , warning ) ;
6832: LD_INT 3
6834: PPUSH
6835: LD_INT 17
6837: PPUSH
6838: CALL 452 0 2
6842: PUSH
6843: LD_INT 1
6845: ARRAY
6846: PPUSH
6847: LD_STRING warning
6849: PPUSH
6850: CALL_OW 88
// centerNowOnUnits ( getUnitsArea ( 3 , isSoldierBreastworkArea ) ) ;
6854: LD_INT 3
6856: PPUSH
6857: LD_INT 17
6859: PPUSH
6860: CALL 452 0 2
6864: PPUSH
6865: CALL_OW 87
// warning = 1 ;
6869: LD_ADDR_EXP 7
6873: PUSH
6874: LD_INT 1
6876: ST_TO_ADDR
// exit ;
6877: GO 6880
// end ; enable ;
6879: ENABLE
// end ;
6880: END
// every 0 0$01 trigger warning and getVehiclesArea ( 8 , warningArea ) and getUnitsArea ( 3 , isSoldierBreastworkArea ) do
6881: LD_EXP 7
6885: PUSH
6886: LD_INT 8
6888: PPUSH
6889: LD_INT 22
6891: PPUSH
6892: CALL 779 0 2
6896: AND
6897: PUSH
6898: LD_INT 3
6900: PPUSH
6901: LD_INT 17
6903: PPUSH
6904: CALL 452 0 2
6908: AND
6909: IFFALSE 6930
6911: GO 6913
6913: DISABLE
// SetAttitude ( 3 , 8 , att_enemy , true ) ;
6914: LD_INT 3
6916: PPUSH
6917: LD_INT 8
6919: PPUSH
6920: LD_INT 2
6922: PPUSH
6923: LD_INT 1
6925: PPUSH
6926: CALL_OW 80
6930: END
// every 0 0$01 do var oil , cargo , depot ;
6931: GO 6933
6933: DISABLE
6934: LD_INT 0
6936: PPUSH
6937: PPUSH
6938: PPUSH
// begin depot = getBuildings ( b_depot , 3 ) ;
6939: LD_ADDR_VAR 0 3
6943: PUSH
6944: LD_INT 0
6946: PPUSH
6947: LD_INT 3
6949: PPUSH
6950: CALL 636 0 2
6954: ST_TO_ADDR
// oil = getBuildings ( b_oil_mine , 3 ) ;
6955: LD_ADDR_VAR 0 1
6959: PUSH
6960: LD_INT 29
6962: PPUSH
6963: LD_INT 3
6965: PPUSH
6966: CALL 636 0 2
6970: ST_TO_ADDR
// if depot > 1 then
6971: LD_VAR 0 3
6975: PUSH
6976: LD_INT 1
6978: GREATER
6979: IFFALSE 7257
// if oil then
6981: LD_VAR 0 1
6985: IFFALSE 7257
// if getBase ( oil [ 1 ] ) then
6987: LD_VAR 0 1
6991: PUSH
6992: LD_INT 1
6994: ARRAY
6995: PPUSH
6996: CALL_OW 274
7000: IFFALSE 7257
// if GetResources ( GetBase ( oil [ 1 ] ) ) [ 2 ] > 50 then
7002: LD_VAR 0 1
7006: PUSH
7007: LD_INT 1
7009: ARRAY
7010: PPUSH
7011: CALL_OW 274
7015: PPUSH
7016: CALL_OW 279
7020: PUSH
7021: LD_INT 2
7023: ARRAY
7024: PUSH
7025: LD_INT 50
7027: GREATER
7028: IFFALSE 7257
// begin cargo = getWeaponVehicles ( ru_cargo_bay , 3 ) ;
7030: LD_ADDR_VAR 0 2
7034: PUSH
7035: LD_INT 51
7037: PPUSH
7038: LD_INT 3
7040: PPUSH
7041: CALL 836 0 2
7045: ST_TO_ADDR
// if cargo then
7046: LD_VAR 0 2
7050: IFFALSE 7068
// cargo = cargo [ 1 ] else
7052: LD_ADDR_VAR 0 2
7056: PUSH
7057: LD_VAR 0 2
7061: PUSH
7062: LD_INT 1
7064: ARRAY
7065: ST_TO_ADDR
7066: GO 7070
// exit ;
7068: GO 7274
// if getFuel ( cargo ) < 10 then
7070: LD_VAR 0 2
7074: PPUSH
7075: CALL_OW 261
7079: PUSH
7080: LD_INT 10
7082: LESS
7083: IFFALSE 7103
// comRefuel ( cargo , depot [ 1 ] ) ;
7085: LD_VAR 0 2
7089: PPUSH
7090: LD_VAR 0 3
7094: PUSH
7095: LD_INT 1
7097: ARRAY
7098: PPUSH
7099: CALL_OW 150
// if depot = 3 and getBuildings ( b_factory , 3 ) then
7103: LD_VAR 0 3
7107: PUSH
7108: LD_INT 3
7110: EQUAL
7111: PUSH
7112: LD_INT 3
7114: PPUSH
7115: LD_INT 3
7117: PPUSH
7118: CALL 636 0 2
7122: AND
7123: IFFALSE 7257
// begin AddComTransport ( cargo , depot [ 3 ] , mat_oil ) ;
7125: LD_VAR 0 2
7129: PPUSH
7130: LD_VAR 0 3
7134: PUSH
7135: LD_INT 3
7137: ARRAY
7138: PPUSH
7139: LD_INT 2
7141: PPUSH
7142: CALL_OW 211
// AddComMoveXY ( cargo , getX ( depot [ 1 ] ) , getY ( depot [ 1 ] ) ) ;
7146: LD_VAR 0 2
7150: PPUSH
7151: LD_VAR 0 3
7155: PUSH
7156: LD_INT 1
7158: ARRAY
7159: PPUSH
7160: CALL_OW 250
7164: PPUSH
7165: LD_VAR 0 3
7169: PUSH
7170: LD_INT 1
7172: ARRAY
7173: PPUSH
7174: CALL_OW 251
7178: PPUSH
7179: CALL_OW 171
// AddComCollect ( cargo , getX ( depot [ 1 ] ) , getY ( depot [ 1 ] ) ) ;
7183: LD_VAR 0 2
7187: PPUSH
7188: LD_VAR 0 3
7192: PUSH
7193: LD_INT 1
7195: ARRAY
7196: PPUSH
7197: CALL_OW 250
7201: PPUSH
7202: LD_VAR 0 3
7206: PUSH
7207: LD_INT 1
7209: ARRAY
7210: PPUSH
7211: CALL_OW 251
7215: PPUSH
7216: CALL_OW 177
// AddComMoveXY ( cargo , getX ( depot [ 3 ] ) , getY ( depot [ 3 ] ) ) ;
7220: LD_VAR 0 2
7224: PPUSH
7225: LD_VAR 0 3
7229: PUSH
7230: LD_INT 3
7232: ARRAY
7233: PPUSH
7234: CALL_OW 250
7238: PPUSH
7239: LD_VAR 0 3
7243: PUSH
7244: LD_INT 3
7246: ARRAY
7247: PPUSH
7248: CALL_OW 251
7252: PPUSH
7253: CALL_OW 171
// end ; end ; if not oil or not depot then
7257: LD_VAR 0 1
7261: NOT
7262: PUSH
7263: LD_VAR 0 3
7267: NOT
7268: OR
7269: IFFALSE 7273
// exit ;
7271: GO 7274
// enable ;
7273: ENABLE
// end ;
7274: PPOPN 3
7276: END
// every 0 0$01 trigger not getUnits ( 8 ) do var picked , dif , i ;
7277: LD_INT 8
7279: PPUSH
7280: CALL 408 0 1
7284: NOT
7285: IFFALSE 7510
7287: GO 7289
7289: DISABLE
7290: LD_INT 0
7292: PPUSH
7293: PPUSH
7294: PPUSH
// begin if not mercenaries then
7295: LD_EXP 4
7299: NOT
7300: IFFALSE 7311
// begin YouLost ( units ) ;
7302: LD_STRING units
7304: PPUSH
7305: CALL_OW 104
// exit ;
7309: GO 7510
// end ; if not getUnits ( 8 ) and mercenaries and endGame = 0 then
7311: LD_INT 8
7313: PPUSH
7314: CALL 408 0 1
7318: NOT
7319: PUSH
7320: LD_EXP 4
7324: AND
7325: PUSH
7326: LD_EXP 8
7330: PUSH
7331: LD_INT 0
7333: EQUAL
7334: AND
7335: IFFALSE 7510
// begin dif := [ 0 , 1 , 2 ] [ difficulty ] ;
7337: LD_ADDR_VAR 0 2
7341: PUSH
7342: LD_INT 0
7344: PUSH
7345: LD_INT 1
7347: PUSH
7348: LD_INT 2
7350: PUSH
7351: EMPTY
7352: LIST
7353: LIST
7354: LIST
7355: PUSH
7356: LD_OWVAR 67
7360: ARRAY
7361: ST_TO_ADDR
// picked := CharacterSelection (  , 1 , 4 - dif , [ sel_changeable , sel_not_hired , sel_change_class ] ^ mercenaries , [ class_soldier , class_mechanic , class_engineer , class_scientistic ] ) ;
7362: LD_ADDR_VAR 0 1
7366: PUSH
7367: LD_STRING 
7369: PPUSH
7370: LD_INT 1
7372: PPUSH
7373: LD_INT 4
7375: PUSH
7376: LD_VAR 0 2
7380: MINUS
7381: PPUSH
7382: LD_INT -3
7384: PUSH
7385: LD_INT -2
7387: PUSH
7388: LD_INT -5
7390: PUSH
7391: EMPTY
7392: LIST
7393: LIST
7394: LIST
7395: PUSH
7396: LD_EXP 4
7400: ADD
7401: PPUSH
7402: LD_INT 1
7404: PUSH
7405: LD_INT 3
7407: PUSH
7408: LD_INT 2
7410: PUSH
7411: LD_INT 4
7413: PUSH
7414: EMPTY
7415: LIST
7416: LIST
7417: LIST
7418: LIST
7419: PPUSH
7420: CALL_OW 42
7424: ST_TO_ADDR
// mercenaries := mercenaries diff picked ;
7425: LD_ADDR_EXP 4
7429: PUSH
7430: LD_EXP 4
7434: PUSH
7435: LD_VAR 0 1
7439: DIFF
7440: ST_TO_ADDR
// dif = [ easySplitArea , normalSplitArea , hardSplitArea ] [ difficulty ] ;
7441: LD_ADDR_VAR 0 2
7445: PUSH
7446: LD_INT 11
7448: PUSH
7449: LD_INT 4
7451: PUSH
7452: LD_INT 8
7454: PUSH
7455: EMPTY
7456: LIST
7457: LIST
7458: LIST
7459: PUSH
7460: LD_OWVAR 67
7464: ARRAY
7465: ST_TO_ADDR
// for i in picked do
7466: LD_ADDR_VAR 0 3
7470: PUSH
7471: LD_VAR 0 1
7475: PUSH
7476: FOR_IN
7477: IFFALSE 7498
// PlaceUnitArea ( i , dif , false ) ;
7479: LD_VAR 0 3
7483: PPUSH
7484: LD_VAR 0 2
7488: PPUSH
7489: LD_INT 0
7491: PPUSH
7492: CALL_OW 49
7496: GO 7476
7498: POP
7499: POP
// centerNowOnUnits ( picked ) ;
7500: LD_VAR 0 1
7504: PPUSH
7505: CALL_OW 87
// enable ;
7509: ENABLE
// end ; end ;
7510: PPOPN 3
7512: END
// every 0 0$01 trigger objective = 1 do var i ;
7513: LD_EXP 1
7517: PUSH
7518: LD_INT 1
7520: EQUAL
7521: IFFALSE 7760
7523: GO 7525
7525: DISABLE
7526: LD_INT 0
7528: PPUSH
// begin NationSide ( 3 , 3 ) ;
7529: LD_INT 3
7531: PPUSH
7532: LD_INT 3
7534: PPUSH
7535: CALL 380 0 2
// for i = 0 to 3 do
7539: LD_ADDR_VAR 0 1
7543: PUSH
7544: DOUBLE
7545: LD_INT 0
7547: DEC
7548: ST_TO_ADDR
7549: LD_INT 3
7551: PUSH
7552: FOR_TO
7553: IFFALSE 7640
// PlaceUnitArea ( createChar (  ,  , class_soldier , 0 , [ rand ( 1 , 2 ) , rand ( 0 , 1 ) , rand ( 0 , 1 ) , rand ( 0 , 1 ) ] ,  ,  ) , soldierEntranceArea , false ) ;
7555: LD_STRING 
7557: PPUSH
7558: LD_STRING 
7560: PPUSH
7561: LD_INT 1
7563: PPUSH
7564: LD_INT 0
7566: PPUSH
7567: LD_INT 1
7569: PPUSH
7570: LD_INT 2
7572: PPUSH
7573: CALL_OW 12
7577: PUSH
7578: LD_INT 0
7580: PPUSH
7581: LD_INT 1
7583: PPUSH
7584: CALL_OW 12
7588: PUSH
7589: LD_INT 0
7591: PPUSH
7592: LD_INT 1
7594: PPUSH
7595: CALL_OW 12
7599: PUSH
7600: LD_INT 0
7602: PPUSH
7603: LD_INT 1
7605: PPUSH
7606: CALL_OW 12
7610: PUSH
7611: EMPTY
7612: LIST
7613: LIST
7614: LIST
7615: LIST
7616: PPUSH
7617: LD_STRING 
7619: PPUSH
7620: LD_STRING 
7622: PPUSH
7623: CALL 198 0 7
7627: PPUSH
7628: LD_INT 14
7630: PPUSH
7631: LD_INT 0
7633: PPUSH
7634: CALL_OW 49
7638: GO 7552
7640: POP
7641: POP
// for i = 0 to 8 do
7642: LD_ADDR_VAR 0 1
7646: PUSH
7647: DOUBLE
7648: LD_INT 0
7650: DEC
7651: ST_TO_ADDR
7652: LD_INT 8
7654: PUSH
7655: FOR_TO
7656: IFFALSE 7743
// PlaceUnitArea ( createChar (  ,  , class_soldier , 0 , [ rand ( 1 , 2 ) , rand ( 0 , 1 ) , rand ( 0 , 1 ) , rand ( 0 , 1 ) ] ,  ,  ) , vehicleEntranceArea , false ) ;
7658: LD_STRING 
7660: PPUSH
7661: LD_STRING 
7663: PPUSH
7664: LD_INT 1
7666: PPUSH
7667: LD_INT 0
7669: PPUSH
7670: LD_INT 1
7672: PPUSH
7673: LD_INT 2
7675: PPUSH
7676: CALL_OW 12
7680: PUSH
7681: LD_INT 0
7683: PPUSH
7684: LD_INT 1
7686: PPUSH
7687: CALL_OW 12
7691: PUSH
7692: LD_INT 0
7694: PPUSH
7695: LD_INT 1
7697: PPUSH
7698: CALL_OW 12
7702: PUSH
7703: LD_INT 0
7705: PPUSH
7706: LD_INT 1
7708: PPUSH
7709: CALL_OW 12
7713: PUSH
7714: EMPTY
7715: LIST
7716: LIST
7717: LIST
7718: LIST
7719: PPUSH
7720: LD_STRING 
7722: PPUSH
7723: LD_STRING 
7725: PPUSH
7726: CALL 198 0 7
7730: PPUSH
7731: LD_INT 12
7733: PPUSH
7734: LD_INT 0
7736: PPUSH
7737: CALL_OW 49
7741: GO 7655
7743: POP
7744: POP
// comHold ( getClassUnitsOutside ( class_soldier , 3 ) ) ;
7745: LD_INT 1
7747: PPUSH
7748: LD_INT 3
7750: PPUSH
7751: CALL 509 0 2
7755: PPUSH
7756: CALL_OW 140
// end ;
7760: PPOPN 1
7762: END
// on BuildingCaptured ( building , side , human ) do begin if side = 3 then
7763: LD_VAR 0 2
7767: PUSH
7768: LD_INT 3
7770: EQUAL
7771: IFFALSE 7789
// SetAttitude ( 3 , 8 , att_enemy , true ) ;
7773: LD_INT 3
7775: PPUSH
7776: LD_INT 8
7778: PPUSH
7779: LD_INT 2
7781: PPUSH
7782: LD_INT 1
7784: PPUSH
7785: CALL_OW 80
// end ;
7789: PPOPN 3
7791: END
